STM32L151在调试ADC过程中通道1数值不准确问题
一、问题描述
在使用STM32L151单片机多个通道进行数据采集时,其余通道数据全部正确,仅PA1引脚1通道数据不正常、下图将ADC初始化放在上面则通道1采集数据不正常、将ADC初始化放在最下面进行初始化时所有通道数据正常、中间的三个初始化为涉及到ADC以及PA1部分。
二、正常时与不正常时ADC寄存器配置对比
正常时寄存器数据↑
不常时寄存器数据↑
三、问题发现与解决
问题发现:由此得到两个寄存器CR2处有区别,通过仿真发现不正常时ADC_InitStructure.ADC_ExternalTrigConv未进行配置、则执行到ADC_Init时数值自动变成0X14,导致CR2寄存器数值变成0X15,从而引起通道1采集数据不正常。
解决方法:给ADC_InitStructure.ADC_ExternalTrigConv赋值为0,或将ADC_InitStructure结构体进行初始化赋值为0,即可解决问题。
下图为CR2寄存器对应0X15的寄存器说明、正确配置应配置为0X01。
大家有不同意见欢迎踊跃探讨