当前位置:首页 > 单片机 > 单片机
[导读]STM32进入HardFault_Handler处理办法HardFault_Handler出现的情况一般有两种:一种是:数组越界一种是:堆栈溢出,程序指针指飞方法一在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。在Regis

STM32进入HardFault_Handler处理办法

HardFault_Handler出现的情况一般有两种:
一种是:数组越界
一种是:堆栈溢出,程序指针指飞

方法一

在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。

在Registers里面找到R14(LR)的值,我的这里是:0xFFFFFFF9
说明一下:

0xFFFFFFF9对应的是要看MSP寄存器

0xFFFFFFFD对应的是要看PSP寄存器
所以这里需要查找的内存地址是MSP的值:0x20008828

在memory里面查找MSP的值:0x20008828,然后在对应的行里面找到地址,地址一般格式都是:0x0800BA68这样的。

4.在Disassembly里面右键选择Show Code at Address,把找到的地址输进去进行搜索,然后就会找到相对应的代码,这里的代码就是在进入循环中断之前的时候的情况,仔细查看这部分函数被调用或者数组内存使用情况。


方法二

在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。

在keil中打开Call Stack + Locals,然后在HardFault_Handler上 右键选择:Show Caller Code,就会跳转到进入循环中断之前的函数处。仔细查看这部分函数被调用或者数组内存使用情况。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭