2025年第16届蓝桥杯嵌入式竞赛学习笔记(十):ADC测量电压
1.原理图
VDD的最大值为3.3V,所以PB15测量电压值的范围为0~3.3V,然后它读取到的AD值为0~4096,所以电压测量公式为
为什么是4096,因为ADC是一个12比特的
2.CubeMX配置
将PB15引脚配置为ADC2_IN15,PB12配置为ADC1_IN11
打开ADC1的配置界面,找到IN11,选择Single ended模式
打开ADC2配置界面,将IN15-Single ended打勾
配置完成后点击右上角生成代码
3.代码部分
编写获取电压的函数
double get_vol(ADC_HandleTypeDef *hadc)
{
HAL_ADC_Start(hadc);
uint32_t adc_value = HAL_ADC_GetValue(hadc);
return 3.3 * adc_value / 4096;
}
LCD函数
void lcd_show(void)
{
sprintf(Temp,"R38_Vol:%.2f",get_vol(&hadc2));
LCD_DisplayStringLine(Line2,(uint8_t *)Temp);
sprintf(Temp,"R37_Vol:%.2f",get_vol(&hadc1));
LCD_DisplayStringLine(Line4,(uint8_t *)Temp);
}
烧录完成后,扭动开发板上的R37与R38旋钮,屏幕上的电压值变化随旋钮变化。