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,就会跳转到进入循环中断之前的函数处。仔细查看这部分函数被调用或者数组内存使用情况。
    这里写图片描述
  • 21
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值