当前位置:网站首页>STM32硬件错误HardFault_Handler的处理方法
STM32硬件错误HardFault_Handler的处理方法
2022-06-25 16:35:00 【李肖遥】
关注、星标公众号,直达精彩内容
来源:网路素材
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。

STM32出现硬件错误可能有以下原因:
(1)数组越界操作;
(2)内存溢出,访问越界;
(3)堆栈溢出,程序跑飞;
(4)中断处理错误;
遇到这种情况,可以通过以下2种方式来定位到出错代码段。
方法1:
1.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

1.2 在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。

1.3 在Keil菜单栏点击“View”——“Memory Windows”——“Memory1”,在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。

1.4 在Keil菜单栏点击“View”——“Disassembly Window”,在“Disassembly”窗口中右击,在下拉菜单中选择“Show Disassemblyat Address...”。在弹出框“Show Code atAdress”的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。

方法2:
2.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

2.2 在Keil菜单栏点击“View”——“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况。
原文链接:https://blog.csdn.net/electrocrazy/article/details/78173558
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
关注我的微信公众号,回复“加群”按规则加入技术交流群。点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。边栏推荐
- The art of code annotation. Does excellent code really need no annotation?
- The problem of missing precision of kettle table input components
- 【NLP】今年英语高考,CMU用重构预训练交出134高分,大幅超越GPT3
- 数字经济时代文化消费新特征
- 这些老系统代码,是猪写的么?
- [untitled]
- Day_ seventeen
- 软件测试面试如何正确谈薪
- Pytorch official document learning record
- Are these old system codes written by pigs?
猜你喜欢
随机推荐
【蓝桥杯集训100题】scratch指令移动 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第14题
WPF development essays Collection - ECG curve drawing
协议和分层次
软件测试面试如何正确谈薪
Xinlou: Huawei's seven-year building journey of sports health
巴比特 | 元宇宙每日荐读:三位手握“价值千万”藏品的玩家,揭秘数字藏品市场“三大套路”...
剑指 Offer II 014. 字符串中的变位词 滑动窗口
XShell连接VMWare虚拟机
内卷?泡沫?变革?十个问题直击“元宇宙”核心困惑丨《问Ta-王雷元宇宙时间》精华实录...
Vscode plug-in self use
Day_ twelve
pychrm的这些配置,你都知道吗?
这项最新的调查研究,揭开多云发展的两大秘密
Day_ seventeen
Reading mysql45 lecture - index continued
从TiDB上线阿里云的背后,如何看待云数据库的变革趋势
About: encryption and decryption of rsa+aes data transmission [chapter], project practice (special summary)
The third day of mysql45
Home office earned me C | community essay
ddia数据密集型应用系统设计 整理








