新手入门
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2015-2-10
- 在线时间
- 0 小时
|
5金钱
用STM32+patfs10c版本写了个读取长文件名的测试程序,总是出现硬件故障,什么原因?我的文件名是2015.2111122330.bin的格式,因为不使用中文所以就没有加载936的page
涉及到的主要修改
#define _CODE_PAGE 437
#define _USE_LFN 1
#define _CODE_PAGE 437
问题:
每次运行到f_readdir-----get_fileinfo(dp, fno);就报硬件故障,单步调试,发现每次运行到绿色光标的位置就直接跳转到P[0]=0;然后报硬件故障;动态内存分配的方法也试验过,一样的现象;#define _USE_LFN 0 就运行正常;求高手帮分析一下问题出在什么地方?
测试程序如下:
////////////////////////////////////////////////////////////////////////////
// Function Name : FF_scanfiles
// Description :
// Input :
// Output : None
// Return : 长文件名数量
////////////////////////////////////////////////////////////////////////////////
uint8 FF_scanfiles(char* path)
{
FRESULT fres;
uint8 file_number =0;
FF_FsInit();
if((fres = f_opendir(&D_Ecg, (const TCHAR*)path))==FR_OK);//打开根目录
{
// Fileinfo.lfsize = _MAX_LFN*2 + 1; //Size of LFN buffer
// Fileinfo.lfname = ff_memalloc(Fileinfo.lfsize);
static char lfn[_MAX_LFN*2 + 1];
Fileinfo.lfname = lfn;
Fileinfo.lfsize = sizeof(lfn);
while(((fres = f_readdir(&D_Ecg,&Fileinfo))==FR_OK)&&Fileinfo.1fname[0])//循环读取文件
{
file_number++;
}
}
//ff_memfree (Fileinfo.lfname);
return file_number;//返回文件数量
}
|
|