一般在工程应用中,内部的ADC在基准稳定时还是比较准的,
但具体使用数据时,因为各种原因,一般还是要对数据进行一些处理,比如采用窗平均值作为采样实际值,这个其实不光是因为ADC采样准不准的问题,而是滤除一些数据波动(这些波动大多数情况下可以认为是干扰)造成的影响。
不准有很多可能,正常情况下和你的参考电压计算实际输入的电压不会差太多。
如果相差很大可以先检查输入电压的阻抗是不是过高,因为STM32的ADC输入阻抗一搬在几十K左右,相关于把输入信号通过一颗电阻拉到地, 如果信号本身的阻抗过高实际测到的数值就会偏底。确定这个问题可以通过并联一个万用表,STM32采集到的数据和万用表对比,如果一至说明是阻抗的问题。
还有一种可能和你的STM32型号有关,有的型号ADC在使用时一定要执行校准函数“HAL_ADCEx_Calibration_Start”