博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32进入HardFault_Handler处理办法
阅读量:6922 次
发布时间:2019-06-27

本文共 603 字,大约阅读时间需要 2 分钟。

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,就会跳转到进入循环中断之前的函数处。仔细查看这部分函数被调用或者数组内存使用情况。 
      这里写图片描述
你可能感兴趣的文章
Shell中SEQ妙用
查看>>
网站SSL安装配置
查看>>
Spring自动化装配bean
查看>>
了解 CMS 垃圾回收日志
查看>>
AU3脚本自动安装QQ6.7
查看>>
Win8Metro(C#)数字图像处理--2.3图像反色
查看>>
#define的用法
查看>>
即时通讯-没有那么可怕
查看>>
ES6: 字符串的扩展
查看>>
统计系统剩余的内存、数据类型转换计算(计算mac地址)、数据类型转换(列表与字典相互转换)...
查看>>
DS5100,DS5300磁盘配置注意事项
查看>>
gzip的工作原理及在Nginx和Apache服务中的应用
查看>>
六步实现Rest风格的API
查看>>
Centos7手动安装OpenStack Mitaka版本--KeyStone安装
查看>>
order by不走索引的思考
查看>>
PHP常用函数
查看>>
摄像头变成文字扫描器
查看>>
**PHP分步表单提交思路(分页表单提交)
查看>>
鱼鹰软件签约活动管理专家蓝色方略
查看>>
Scott Schema创建脚本
查看>>