IO中奖及其解决过程感受---遇到了就是赚到了
通过这一段时间的学习,想法很多。手痒的的不行找几个demo动动手。在测试过程中发现一个问题蜂鸣器驱动失效。解决方法和思考过程:
思考方向:
1.程序中寄存器配置错误。
2.蜂鸣器损坏。
3.电阻虚焊。
4.IO共用的复位电路有问题。
5.主芯片有问题。
解决过程:
1.将IO口单态使能,通过外用表测量电阻R87的电压观察蜂鸣器驱动状态。
测量结果是4.68V,拉不低。在程序中设置P54为IO口模式也是一样。
2.联机仿真观察IO口状态
打开IO口观察窗 Debug→All-Ports→发现0x1f P54也是高电平
注意脱机仿真是看不到IO口状态的。
怀疑是不是IO其它复用功能设置了IO口的配置。所以重新写一个最简单的程序进行测试。
运行结果依然如故
排查P54的复用功能已经没有开启任何复用功能了。
思考继续排查软件的难度会越来越大,换个方向排查一下硬件部分。
3.短接一下R48靠近T2基极的部分,可以触发蜂鸣器,说明蜂鸣器和三极管都没有问题。
4.排查共用的复位电路。
把C1去掉测试依然不能驱动蜂鸣器。按REST按键也不能触发蜂鸣器。
5.怀疑是主芯片接触不良。加焊主芯片引脚后问题解决。按复位按键也可以触发蜂鸣器了。
6.再用仿真观察P54口的状态。
在程序中增加LED灯驱动是问了排查IO操作的局部问题还是全局问题。
总结:
1.要相信科学,在线仿真可以把自己的操作观察的一清二楚。可以很客观的观察到问题的节点。是程序员观察程序底层运作的一双眼睛。
2.解决问题时,需要平衡问题解决方向的时间复杂度,尽量不要钻牛角尖。
一个账号最好只开一个贴,第二次打卡只需回复原来的贴即可
https://www.stcaimcu.com/data/attachment/forum/202308/06/075641bxd47222d6woe623.png
好的 我的这个帖子已经移动位置了,可以删除掉它了。 这个 P5.4/接了个10uF电容到地,充放电要时间,拉高拉低,没没那么快
页:
[1]