HardFault定位步骤

来源:互联网 发布:网络蜘蛛与源代码 编辑:程序博客网 时间:2024/06/03 21:14

以下内容是参考《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)

0 0