STM32f407的ADC采样值出错
使用STM32f407的ADC遇到一个奇葩的问题。
问题
STM32f407的ADC在采样的时候,值很大,甚至超过4096(stm32最高位12bit的ADC)。通过调试发现,无论设置了数据左对齐还是右对齐,其结果都是左对齐!!!这才导致了值很大,甚至超过4096。当然可以将这个结果移位来解决,但不是根本办法。
还是想,这到底为什么?明明配置了数据对齐方式,却没有效果。
问题发现
一个小时过后…
两个小时过后…
一个下午过后…发现,只要:
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps
Adc_Init(); //初始化ADC
初始化CAN后,立即初始化ADC,就会有这个问题。终究不知道是为啥,并且这两个外设也没有共用引脚。
问题解决
换一下顺序:
Adc_Init(); //初始化ADC
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps
最好还不要连着放在一起。可以尝试:
Adc_Init(); //初始化ADC
//其他代码
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps