打印
[应用相关]

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

[复制链接]
611|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值,可以定位出问题的那条指令在哪个位置

使用特权

评论回复
5
香水城| | 2020-10-21 15:56 | 只看该作者
还有对齐问题,

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

使用特权

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

使用特权

评论回复
7
RTX3080| | 2020-11-19 15:57 | 只看该作者
不用怀疑,就是你程序的问题,调试界面查看寄存器的值,对应的找问题。

使用特权

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

本版积分规则

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

107

主题

2306

帖子

9

粉丝