1、STM32单片机已经不在对标准库更新,只能自己慢慢去学习hal库,记录一下自己遇到的问题。
2、配置三通道ADC采集,采用非DMA模式:
选择了ADC1_IN4、温度和参考电压作为采集通道,配置如下:
Scan Conversion Mode:选用了disable, 当配置成enable的时候,转换有问题;
Continuous Conversion Mode:选用enable,该选项和Discontinuous Conversion Mode不能同时使能,按照官方文档,转换玩一次队列之后,自动进行下一次转换;实验的时候,如果不每次开启ADC转换(HAL_ADC_Start(&hadc1);),是不会进行自动转换的;如果同时开启Scan Conversion Mode和Continuous Conversion Mode,ADC_IN4与参考电压的数值会相同,采集数据肯定是错误的;
另外需要注意开启的通道数目及转换顺序。
3、main函数里面while的采集代码:
while(1)
{
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1,0xffff);
ADC1_IN4=HAL_ADC_GetValue(&hadc1);
HAL_ADC_PollForConversion(&hadc1,0xffff);
ADC1_tep=HAL_ADC_GetValue(&hadc1);
HAL_ADC_PollForConversion(&hadc1,0xffff);
ADC1_ref=HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1);
printf("ADC1_IN4=%d\r\n",ADC1_IN4);
printf("ADC1_ref=%d\r\n",ADC1_ref);
}
数据打印信息:
ADC采集信息正确。