HardFault定位步骤

以下内容是参考《CM3权威指南》和stm32f10x的解决方法总结的,有些内容会有所出入。实操中找不到和图片相同的内容时记得要灵活变通。

1.在stm32f4xx_it.c中的HardFault_Handler()中添加断点。当硬错误发生时就可以马上暂停程序执行。

2.此时查看R14(LR)寄存器的值,确定哪个指针的值是有效的。根据图片里的数值,我取MSP的值0x20000938。

1

2

3.打开Memory窗口,跳至MSP=0x20000938的内存位置。从这里向高地址数六个(也就是第七个?我也不是很清楚~)unsigned long,那个0x0800xxxx的数字就是出错的程序位置了。

3

4.打开反汇编窗口,右键->”Show Disassembly at Address”,输入我看到的第七个地址0x080021F2,就可跳转到发生HardFault的那一行代码了。

4

参考链接:http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM

(另外在FreeRTOS中有个更详细的指南,我没看~:
http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值