STM32进入死循环HardFault_Handle()或Error_Handler()解决方案

1, void Error_Handler(void) 死循环。

现象:跳转不到 main() 函数
原因:一般是因为没有用微库进入半主机模式

在这里插入图片描述在这里插入图片描述

解决方案:MDK中Options => Target => Use MicroLIB 打钩

在这里插入图片描述

2, void HardFault_Handler(void) 死循环。

现象:跑着跑着进入了 HardFault_Handler() 死循环。
原因:
1、内存溢出或者访问越界。
2、堆栈溢出,程序指针指飞。
3、硬件电路错误!(现象:没有自己的程序,官方或STM32CubeMX程序也会死在这里)

在这里插入图片描述
硬件问题现象

内存堆栈问题 解决方案11、函数内部变量占用空间较大时,定义为全局变量或者静态变量,减少堆栈的占用。
2、多使用指针解决数据的复制,同时减少内存的占用。
内存堆栈问题 解决方案2:修改堆栈大小

在这里插入图片描述
STM32CubeMX 修改堆栈大小 Stack。(通常说的堆栈指的是 栈)
在这里插入图片描述

硬件问题 解决方案:检查硬件修改正确!
1,电源
2,复位电路
3,时钟电路
4,启动电路 BOOT0、BOOT1
5、芯片上都有个VCAP脚。他需要外接一个电容到地,目的是为了保证内部主调压器的电压稳定,选择不当可能会引起程序无法下载或者运行不稳定的情况。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值