一次单片机 SFR 页引发的“事故”

一次单片机 SFR 页引发的“事故”

现象

需要使用单片机的 ADC 功能,在对 ADC 初始化后,根据内部分的 IVREN 计算出 VDD 的电压值 。
在读取时一直显示 ADC 异常的高。

排查分析

先把所有其它任务去除,只留下一个 读取 VDD 的功能,发现还是异常高。
然后把 IO 初始化,主频初始化,外设初始化全部拿掉。
只留下一个 ADC 初始化,现在可以读出正常的值,这下比较放心了,硬件是没有问题的。
然后把一个一个任务加回去,加到 IO 初始化时发现 ADC 值异常了。
接着对 IO 初始化全部注释,再一个一个加回去。
最后排查到因为在换 SFR 页后修改寄存器后没将 SFR 页改回,然后在 ADC 初始化时也没有先设置一下 SFR 页,导致 ADC 初始化出错。

猜你喜欢

转载自www.cnblogs.com/F4NNIU/p/10527149.html