您的位置:首页 > 其它

STM32出现HardFault_Handler故障

2013-08-02 21:03 253 查看
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来实现对内存的回收。

成功解决此问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: