STM32出现HardFault_Handler故障

FATFS文件系统的LFN选项支持4种配置模式

#define _USE_LFN 1

/   0: Disable LFN feature. _MAX_LFN and _LFN_UNICODE have no effect.

/   1: Enable LFN with static working buffer on the BSS. Always NOT reentrant.

/   2: Enable LFN with dynamic working buffer on the STACK.

/   3: Enable LFN with dynamic working buffer on the HEAP.

当选择1时,debug进去进行硬件仿真,设置断点调试,发现系统总是进入

void HardFault_Handler(void)

while (1);

}

然后陷入死循环出不来。

网上搜索资料:

STM32出现HardFault_Handler故障的原因主要有两个方面:


1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。


2、堆栈溢出。增加堆栈的大小。


因此,配置为1会发生内存溢出或者堆栈溢出继而使STM32进入硬件错误处理函数。


配置2也出现同样的问题,因此,解决方案是配置#define _USE_LFN 3,然后添加syscall.c来实现对内存的回收。


成功解决此问题。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值