STM32CUBEIDE调试代码过程中,出现崩溃到HardFault_Handler函数中

项目场景:

使用STM32CUBEIDE调试代码过程中,会出现死到HardFault_Handler函数中,无意间发现一种ide的调试方法


问题描述

程序崩溃导致程序死机


原因分析:

HardFault_Handler硬件中断,是单片机中经常出现的一种异常问题。出现 HardFault_Handler 的原因主要有3类:

内存溢出或者访问越界:由于程序中申请的内存超出了系统的可用内存,或者申请的内存在使用过程中未被正确释放。这种情况会导致系统无法为其他请求分配足够的内存,甚至可能导致系统崩溃。访问了数组范围之外的内存位置或使用野指针,也会导致HardFault_Handler错误。
堆栈溢出:通常发生在函数调用或数组访问时。当函数内部的数组过大,或者递归调用层次太深时,就可能发生堆栈越界。
硬件故障:如果硬件出现故障,例如电源干扰、连接器故障或传感器故障等,可能会导致HardFault_Handler错误。


解决方案:

IDE带有故障分析器,不用像之前一样查找主堆栈指针再去查找
1.在HardFault_Handler中添加断点
在这里插入图片描述
2.添加故障分析器视图,如图
在这里插入图片描述
然后等待程序崩溃
3.故障分析器里面红色的代表故障原因
在这里插入图片描述

4.点击下方寄存器lr或者pc可以直接跳转到故障代码。我的故障是除零了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值