本帖最后由 通宵敲代码 于 2019-3-14 22:40 编辑
问题如上描述,ADC可以采集数据,但采集到的数据一直接近0xFFF(有变化),
经测量发现,ADC使用的IO引脚初始化后,依然会输出电压,
通过更改程序测试后发现,尽管配置了ADC模式,并关闭了该引脚的数字逻辑输出,
单IO引脚印染可以控制输出高低电平,
输出高电平时,ADC采样接近0xFFF,输出低电平时,ADC采样接近0x000,
不知道是不是芯片自身有BUG,还是我初始化程序不会对
@奔跑的牛 @clyu @Risn
///////////////////////////////////////////////////////////////////////////////////////////////////////
更新一下,问题已解决,是BSP库中的参考例程移植的坑
其中本次所用的库为NUC230_240 Series BSP CMSIS V3.01.001,
参考的例程为*\StdDriver\CAN_NormalMode_Transmit
针对问题现象,通过分析发现,ADC确实是已经在工作了,但IO口功能并未关闭,
导致引脚仍然可以继续输出逻辑点评0或1,通过外接可调电阻测试,
发现当引脚电压强制逐渐拉低时,ADC采样是会随着输入电压值变化的,
迫不得已使用了最简单也是最笨的办法,挨个函数逐条语句屏蔽,定位问题,
最终发现,当关闭CAN1初始化函数时,ADC采样正常,
继续定位后发现,问题由如下一条语句引起,顿然醒悟
其中关于CAN1函数引脚复用功能配置的时候,并未使用位或赋值,
而是直接对整个寄存器直接赋值,导致PA端口除CAN1以外的其他引脚,
均作为了普通IO口使用,具体函数如下
经检查发现,此版本的BSP中四个关于CAN的测试例程,程序均是如此,还望避坑
|