[应用相关]

为什么每次都进入到HardFault_Handler,怎么规避?

[复制链接]
380|6
手机看帖
扫描二维码
随时随地手机跟帖
单片小菜|  楼主 | 2020-10-21 08:47 | 显示全部楼层 |阅读模式
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}
求大神解答。

使用特权

评论回复
sonicll| | 2020-10-21 08:48 | 显示全部楼层
基本上都是你自己代码的问题,指针越界,读写了不允许读写的地址

使用特权

评论回复
单片小菜|  楼主 | 2020-10-21 10:02 | 显示全部楼层
sonicll 发表于 2020-10-21 08:48
基本上都是你自己代码的问题,指针越界,读写了不允许读写的地址

除了这一种情况,还有别的可能吗?我用的都是数组,没有使用指针。

使用特权

评论回复
sonicll| | 2020-10-21 11:37 | 显示全部楼层
单片小菜 发表于 2020-10-21 10:02
除了这一种情况,还有别的可能吗?我用的都是数组,没有使用指针。

数组也是一样的,数组下标存在越界的问题。具体问题具体分析,一般可以在进入hardfault时,查看当前栈里的内容,参考cortex-m3手册,找到栈里保存的PC和LR值,可以定位出问题的那条指令在哪个位置

使用特权

评论回复
香水城| | 2020-10-21 15:56 | 显示全部楼层
还有对齐问题,

如果开启了MPU,访问非法问题。。。。。。

使用特权

评论回复
江枫渔火| | 2020-10-21 20:58 | 显示全部楼层
通过在线仿真运行,在死掉之后,打开调用栈查看器,看下死之前调用了啥。其实也很容易就发现问题。

使用特权

评论回复
RTX3080| | 2020-11-19 15:57 | 显示全部楼层
不用怀疑,就是你程序的问题,调试界面查看寄存器的值,对应的找问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:资深专家
简介:丰富的嵌入式软硬件开发管理经验; 丰富的项目管理经验并具备敏锐的市场嗅觉; 丰富的产品的供应链资源及工厂管控能力; 具备很强的产品落地经验(从产品企划到产品量产);

103

主题

2263

帖子

7

粉丝