资讯详情

STM32Cube系列ADC(模数转换)

本例介绍了两个例程STM32模数转换器(ADC),第一个通过ADC收集内部温度传感器通道的电压,然后得到MCU内部温度。第二个通过ADC读取电位调压模块输出的电压。

打开时钟的频率为72MHz

打开串口1,不打开串口中断

ADC选择温度传感器通道选择。

ADC1配置如下,选择默认设置。Date Alignment设置为数据右对齐。

生成报告、代码和编译程序。adc.c可以在文件中看到ADC初始化函数。

在stm32f1xx_hal_adc.h在头文件中可以找到以下内容ADC操作函数。和串口一样,ADC也可以三种方式控制。

在main变量保存在函数前面AD采集的值。

在main函数while循环里面添加函数声明变量保存AD采集的值。

  HAL_ADC_Start(&hadc1);//打开ADC1   HAL_ADC_PollForConversion(&hadc1, 50)   if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))//是判断转换标志位是否设置   {    AD_Value = HAL_ADC_GetValue(&hadc1);//阅读ADC转换数据    printf("MCU Temperature:%.1f???\r\n",((AD_Value*3.3/4096-0.76)/2.5 25));   }   HAL_Delay(1000);

AD_Value*3.3/4096将转换后的数据转换为电压,单位为V,参考电压为3.3V。查询数据手册中电压和温度之间的关系。计算公式后更换MCU内部温度值。

将编译程序下载到开发板上。打开串口助手,将波特率设置为115200,串口助手显示温度

2.读取单个引脚上的电压

在前面在此基础上打开ADC1里的IN0(PA0)

在主程序中添加以下程序

  while (1)   {     /* USER CODE END WHILE */      /* USER CODE BEGIN 3 */   HAL_ADC_Start(&hadc1);   HAL_ADC_PollForConversion(&hadc1, 50);   if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))   {    AD_Value = HAL_ADC_GetValue(&hadc1);    printf("ADC1_IN0 AD_value: %.2fV\r\n",((AD_Value*3.3/4096)));   }         HAL_Delay(1000);   }   /* USER CODE END 3 */

编译正确后下载到开发板,调整电位器时获得AD转换值和电压值将变化,并通过串口打印出来.

标签: r09n系列电位器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台