最近在调试中,使用STM32F103C8T6时,发现A/D采集时始终有50mV的误差。且采集不到50mV以下的电压。我使用的HAL库,经过搜索,在某网站找到了解决方法。
直接上代码:
HAL_ADC_Start(&hadc1);
ADC1->CR2|=1<<3; //使能复位校准
while(ADC1->CR2&1<<3); //等待校准结束
ADC1->CR2|=1<<2; //开启AD校准 (下面说了,校准前ADON必须为0,但上面已经设置了ADON=1)
while(ADC1->CR2&1<<2); //等待校准结束
原因可能就是AD没有进行软件校准,原帖也没说明白。我是个小白,想着其他人也可能遇到同样的问题,分享一下。
我在搜索ADC校准的过程中,还找这样一个帖子,链接如下:
STM32L0 ADC使用HAL库关于校准问题的说明_stm32adc校准函数-CSDN博客
原文中说使用,HAL_ADCEx_Calibration_Start(&hadc1); 函数,我试了一下,不好用,可能我没用好,这个问题我就暂时搁置了,欢迎各位大佬指导。