单片机学习小组
直播中

往事只能回首

12年用户 553经验值
私信 关注

怎样去解决屏幕按键无效且卡住的问题呢

屏幕按键无效且卡住是因为什么原因导致的?
怎样去解决屏幕按键无效且卡住的问题呢?



回帖(1)

陈晓露

2022-1-20 14:48:34

  • 问题描述
屏幕按键无效且卡住,过一会儿就好了,观察波形,初步怀疑是芯片在不断复位。



  • 问题分析
初步怀疑到芯片复位后,就去读取RCC_CSR寄存器的高十六位,发现确实独立看门狗复位标志被置”1”,进而分析有两种可能:一、看门狗时间太短,程序跑完需要的时间大于看门狗的时间从而来不及喂狗导致复位;二、程序跑死在某处了。对于第一种发现看门狗设置的时间是远远大于程序跑完的时间,从而排除,那么只能定位到第二种程序跑死。



  • 解决问题
现在的问题就是要找到程序死在哪里且解决掉这个程序BUG。通过观察代码,发现有几处while函数很值得怀疑,于是写了测试代码发现死在了硬件错误中断(HardFault_Handle)这里。在网上查找相关资料后发现大多数是说:数组越界或者堆栈溢出的问题。于是先在线仿真查看是执行哪条语句导致进入到HardFault_Handle(网上有很多方法去寻找这条语句,这就不列举了),找到后发现是与结构体成员判断语句有关,初步怀疑与地址没有四字节对齐有关,查看.MAP文件发现都对齐,应该不存在这样的问题。进一步查看汇编发现出问题的语句上一、二条都有PC指针进行偏移的操作,怀疑是这个指针进行偏移的时候出问题的,而PC指针指向的是Flash的地址,那么会不会是进行Flash读取出问题。再将底层的Flash以及时钟配置看了下,发现Flash的等待周期没有按照数据手册(如下图)进行正确配置。最后更正配置且进行测试,再无复现问题,就此解决。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分