STM32进入HardFault_Handler处理办法

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,就会跳转到进入循环中断以前的函数处。仔细查看这部分函数被调用或者数组内存使用状况。 
      这里写图片描述
相关文章
相关标签/搜索