SD卡读写流程:
res = f_opendir(&exeplaydir,(const TCHAR*)txtDir);
if(FR_OK == res)
{
LCD_ShowString(20,20,200,16,16,"OK");
}
f_exe=(FIL *)gui_memin_malloc(sizeof(FIL)); //开辟FIL字节的内存区域
exeplayinfo.lfsize=_MAX_LFN*2+1; //长文件名最大长度
exeplayinfo.lfname=mymalloc(exeplayinfo.lfsize); //为长文件缓存区分配内存
fname=mymalloc(exeplayinfo.lfsize); //为不带路径的文件名分配内存
fname1=mymalloc(exeplayinfo.lfsize);
while(f_exe==NULL||exeplayinfo.lfname==NULL||fname==NULL)//内存分配出错 ||exeplayindextbl==NULL
{
LCD_ShowString(20,190,200,16,16,"FAIL!");
}
res=f_readdir(&exeplaydir,&exeplayinfo);
if(res==FR_OK)
{
fn=(u8*)(*exeplayinfo.lfname?exeplayinfo.lfname:exeplayinfo.fname);
strcpy((char*)fname,(const char*)fn);
}
strcpy((char*)fname1,(char*)txtDir);
strcat((char*)fname1,"/");
strcat((char*)fname1,(const TCHAR*)fname);
res=f_open(f_exe,(const TCHAR*)fname1,FA_READ|FA_WRITE);
if(FR_OK == res)
{
LCD_ShowString(20,40,200,16,16,"OK");
}
gui_memset(membase,0,f_exe->fsize); //清空这片内存
res=f_read(f_exe, membase, f_exe->fsize, (UINT*)&br);
LCD_ShowNum(172,250,res,5,16); //——————————(此处返回0)
LCD_ShowNum(172,270,f_exe->fsize,5,16);
f_lseek(f_exe, f_exe->fsize); //指针移到文件最后
res = f_write(f_exe, fbuf,10, (UINT*)&br); //——————————(此处返回0)
f_write返回的值是0,我写的fbuf[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09},为什么打开SD卡中对应的.txt文件中什么都没有?求大神指点迷津~~
|