STM32单片机的实现AD,读取模拟电压值,程序没问题,我在淘宝买的板子上试过,一切正常,可以读出PA0上的相应电压值。但是在我自己焊的板子上电压值就读不出来,一直是0(万用表能测到PA0引脚上有电压)。两个板子连线一样的。
仔细比较了下,发现不同的就是一个单步仿真时的左侧那个register寄存器,R0。运行到函数
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx)
{
/* Check the parameters */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Return the selected ADC conversion value */
return (uint16_t) ADCx->DR;
}
这里的最后一步return(uint16_t) ADCx->DR时,左侧显示的R0寄存器的值就是0x00000000,不出现正常电压值。而淘宝买的板子最后一步return时,左侧显示的R0寄存器的值就是PA0引脚上电压值数据的值,如0x000005C3。试过PA0,PA2,PA6等多个AD口,情况一样。到return这步R0寄存器的值就是0x00000000(单步调试程序时,之前的行,R0值有变化且正常),有一两次还出现到return这步R0寄存器的值就是0x00000FFF,但不是正确的电压值。
请问这是什么原因吗?谢谢大神! |