您的位置 首页 5G

STM32呈现HardFault_Handler毛病的原因及处理办法收拾

STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查…

STM32呈现HardFault_Handler毛病的原因主要有两个方面:

1、内存溢出或许拜访越界。这个需求自己写程序的时分标准代码,遇到了需求渐渐排查。

2、仓库溢出。添加仓库的巨细。

呈现问题时排查的办法:

1、产生反常之后可首要检查LR寄存器中的值,确认当时运用仓库为MSP或PSP,然后找到相应仓库的指针,并在内存中检查相应仓库里的内容。由于反常产生时,内核将R0~R3、R12、Return address、PSR、LR寄存器顺次入栈,其间Return address即为产生反常前PC即将履行的下一条指令地址,因此在仓库中反数第三个字即为犯错方位。

2、默许的HardFault_Handler处理办法是B .将它改成BX LR直接回来的方式。然后在这条句子打个断点,一旦在断点中停下来,阐明犯错了,然后再回来,就可以回来到犯错的方位的下一条句子那儿。
这个有时分或许需求在反汇编形式下调试,由于可所以程序跑飞一瞬间才呈现HardFault_Handler。

3、仍是将中止函数修正,打印中止时的一些信息:

HardFault_Hander()界说如下:

void HardFault_Handler(void)
{
uint32_tr_sp ;

r_sp = __get_PSP();//获取SP的值
PERROR(ERROR,Memory Access Error!);
Panic(r_sp);

while (1);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/276897.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部