单片机学习小组
登录
直播中
往事只能回首
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的等待周期没有按照数据手册(如下图)进行正确配置。最后更正配置且进行测试,再无复现问题,就此解决。
问题描述
屏幕按键无效且卡住,过一会儿就好了,观察波形,初步怀疑是芯片在不断复位。
问题分析
初步怀疑到芯片复位后,就去读取RCC_CSR寄存器的高十六位,发现确实独立看门狗复位标志被置”1”,进而分析有两种可能:一、看门狗时间太短,程序跑完需要的时间大于看门狗的时间从而来不及喂狗导致复位;二、程序跑死在某处了。对于第一种发现看门狗设置的时间是远远大于程序跑完的时间,从而排除,那么只能定位到第二种程序跑死。
解决问题
现在的问题就是要找到程序死在哪里且解决掉这个程序BUG。通过观察代码,发现有几处while函数很值得怀疑,于是写了测试代码发现死在了硬件错误中断(HardFault_Handle)这里。在网上查找相关资料后发现大多数是说:数组越界或者堆栈溢出的问题。于是先在线仿真查看是执行哪条语句导致进入到HardFault_Handle(网上有很多方法去寻找这条语句,这就不列举了),找到后发现是与结构体成员判断语句有关,初步怀疑与地址没有四字节对齐有关,查看.MAP文件发现都对齐,应该不存在这样的问题。进一步查看汇编发现出问题的语句上一、二条都有PC指针进行偏移的操作,怀疑是这个指针进行偏移的时候出问题的,而PC指针指向的是Flash的地址,那么会不会是进行Flash读取出问题。再将底层的Flash以及时钟配置看了下,发现Flash的等待周期没有按照数据手册(如下图)进行正确配置。最后更正配置且进行测试,再无复现问题,就此解决。
举报
更多回帖
rotate(-90deg);
回复
相关问答
屏幕
按键
怎样
去
解决RK3288 Android6.0调试时出现几个USB摄像头打开预览时
卡住
的问题
呢
2022-03-03
1855
怎样
去
解决RK3288 Android7.1系统虚拟
按键
方向不对的问题
呢
2022-03-03
1193
怎样
去
编写STM32
按键
处理的程序
呢
2021-12-01
721
怎样
使用STM32CubeMX
去
完成
按键
的开发试验
呢
2021-11-22
971
怎样
去
实现独立
按键
和矩阵
按键
电路的程序代码
呢
2022-01-20
973
怎样
去
编写单片机的独立
按键
与矩阵
按键
的扫描函数
呢
2022-02-23
2198
RK3288插入身份证模块时摄像头会
卡住
且
无法识别怎么
去
解决
2022-03-10
1765
怎样
通过411板上的
按键
去
控制LED的亮灭
呢
2021-11-17
833
为什么
按键
板与主板通讯会出现
按键
响应不到的问题
呢
2022-02-10
1134
Rockchip的
按键
驱动该
怎样
去
使用
呢
2022-03-10
3586
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分