蓝桥杯STM32G431RBT6学习——ADC
·
蓝桥杯STM32G431RBT6学习——ADC
前言
ADC即模数转换,也是蓝桥杯的常考考点,STM32G431RBT6具有两个12位的ADC,国信长天开发板上通过PB12与PB15连接到精可调电阻上,其接线如下:

其中PB12为ADC1的通道11,PB15为ADC2的通道15。
STM32CubeMX配置

将对应引脚配置为对应的ADC通道后,使能其信号输入,配置就算完成了。由于并不使用DMA及看门狗控制,因此下方配置可以省略,ADC默认为12位精度数据右对齐。
Keil代码编写
ADC相关ADI:
ADC启动函数:
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
参数:ADC句柄,由CubeMX生成的adc.c中定义
获取ADC采集值:
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)
参数:ADC句柄,由CubeMX生成的adc.c中定义
代码编写:
得益于使用HAL库的好处,关于ADC的初始化及配置步骤全部由CubeMX生成了,剩下的就只有读取采集到的数值步骤了,代码如下:
//主函数部分:
while (1)
{
/* USER CODE END WHILE */
char txt1[20];
char txt2[20];
sprintf(txt1," R37-ADC = %.2lf",adcGetValue(&hadc2));
sprintf(txt2," R38-ADC = %.2lf",adcGetValue(&hadc1));
LCD_DisplayStringLine(Line4,(u8*)txt1);
LCD_DisplayStringLine(Line5,(u8*)txt2);
HAL_Delay(333);
/* USER CODE BEGIN 3 */
}
//函数功能: 获取ADC采集到的值
//函数参数: ADC句柄
//函数返回值:采集到的ADC值
double adcGetValue(ADC_HandleTypeDef *hadc)
{
double adcValue;
HAL_ADC_Start(hadc);
adcValue = HAL_ADC_GetValue(hadc);
//12位精度,/4096获取其占比后*3.3(最大电压)得到实际电压
return (adcValue/4096*3.3);
}
更多推荐
所有评论(0)