Keil下STM32调试FATFS遇到的怪异问题解决。

如题,在调试一个文件选择函数时,如果某个文件过多的文件夹选择文件时返回结果(路径与文件名字符串)会出错,而文件少的文件夹就没错。

仔细查看代码发现在文件选择函数内部定义了

FILEINFO  fi[32];

而文件过多的文件夹有100多个文件。我只能浏览到第59个。

于是想到改为

FILEINFO  fi[200];

运行结果还是出错。

为什么呢?

看了一下FILEINFO

typedef struct {
    FSIZE_t    fsize;            /* File size */
    WORD    fdate;            /* Modified date */
    WORD    ftime;            /* Modified time */
    BYTE    fattrib;        /* File attribute */
#if _USE_LFN != 0
    TCHAR    altname[13];            /* Altenative file name */
    TCHAR    fname[_MAX_LFN + 1];    /* Primary file name */
#else
    TCHAR    fname[13];        /* File name */
#endif
} FILINFO;

每个FILEINFO结构体占用280左右字节,因为我采用了LFN,而MAX_LFN=256

280*200》预定义的栈大小,导致程序出错。

最后把FILEINFO  fi[200];定义为全局变量,问题解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值