USB HOST 、SD卡及FATFS文件系统同时用的堆栈溢出问题

2019-07-20 01:26发布

STM32使用文件系统FATFS的时候非常容易出现栈溢出的现象:重复使用f_open,f_readdir,等函数会出现第二次或者第三次调用(参数不同)时候程序异常,(我是重复使用f_readdir会出现这样的问题)debug显示总在运行中,查看call stack发现调用位置特别深,在最深处总是循环,出不去。网上查找了很多代码指导,包括修改时钟,修改全局变量(这个应该可以,但是我程序较大,改一两处没用,担心全部改完之后还是处于临界溢出状态,稍微变动可能就会出现问题),查看硬件连接,查看中断,查看是否是分配内存过小等问题,最后才看到这个堆栈问题。 解决方案:打开stm32的启动文件startup_stm32f40_41xxx.s修改第四十一行:Stack_Size      EQU    0x00000F00原先为400,我修改到800,有时还会卡死,于是增加到了f00,问题完美解决 堆栈修改.png
0条回答

一周热门 更多>