系列文章目录
文章目录
目录
前言
本文主要涉及ADC单路采集,在国赛模块部分会讲解多路ADC采集+DMA传输
一、工程创建
查看手册可知,PB15和PB12是ADC采集口,对应板子上的两个“旋钮”
所以在CubeMX中的配置也只需要将这两个引脚的ADC通道打开
配置参数默认即可,其他的时钟树及debug相关配置,可在LED一文查看
二、代码编写
1.相关函数
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc):启动ADC转换
在每一次转换时都要调用启动函数
uint32_t HAL_ADC_GetValue(const ADC_HandleTypeDef *hadc):获取转换值
2.获取ADC值
uint32_t ADC1_GetValue(void)
{
uint32_t ADC_Value;
HAL_ADC_Start(&hadc1);
ADC_Value = HAL_ADC_GetValue(&hadc1);
return ADC_Value;
}
也可以以多次采集的平均值作为ADC当前采集值,以提高准确性,本文就以一次采集值作为当前ADC的值
3.ADC测试代码
void ADC1_text(void)
{
char temp[30];
sprintf(temp,"Value:%d,V1:%.2f",ADC1_GetValue(),ADC1_GetValue()*3.3/4096);
LCD_DisplayStringLine(Line0,(uint8_t *)temp);
}
可实现采集ADC的值并在LCD上显示采集值以及由该采集值转换得到的电压值,其中,电压转换公式是ADC_Value * 逻辑高电平对应的电压 / 2^ADC位数 ,该工程为ADC_Value*3.3/2^12,在使用测试代码时,记得先初始化LCD,再在while(1)里面调用测试代码,LCD的使用可参考LCD一文