407的開發板綜合實驗在主程序死循環前面對文件系統的檢測是通過以下代碼實現的嗎?
//W25Q128檢測,如果不存在文件系統,則先創建.
temp=0;
do
{
temp++;
res=exf_getfree("1:",&dtsize,&dfsize);//得到FLASH剩余容量和總容量
delay_ms(200);
}while(res&&temp<20);//連續檢測20次
if(res==0X0D)//文件系統不存在
{
LCD_ShowString(5,ypos+fsize*j,lcddev.width,lcddev.height,fsize, "Flash Disk Formatting..."); //格式化FLASH
res=f_mkfs("1:",1,4096);//格式化FLASH,1,盤符;1,不需要引導區,8個扇區為1個簇
if(res==0)
{
f_setlabel((const TCHAR *)"1:ALIENTEK"); //設置Flash磁盤的名字為:ALIENTEK
LCD_ShowString(5+okoffset,ypos+fsize*j++,lcddev.width,lcddev.height,fsize, "OK");//標志格式化成功
res=exf_getfree("1:",&dtsize,&dfsize);//重新獲取容量
}
}
if(res==0)//得到FLASH卡剩余容量和總容量
{
gui_phy.memdevflag|=1<<1; //設置SPI FLASH在位.
LCD_ShowString(5,ypos+fsize*j,lcddev.width,lcddev.height,fsize, "Flash Disk: KB");//FATFS檢測
temp=dtsize;
}else system_error_show(5,ypos+fsize*(j+1),"Flash Fat Error!",fsize); //flash 文件系統錯誤
在我的項目里面(板子是新制作的),開始掛載外部flash時res = f_mount(fs[1],"1:",1); 返回的res值為0x0D,然后格式化flash,給磁盤命名:
res=f_mkfs("1:",1,4096);
f_setlabel((const TCHAR *)"1:ALIENTEK");
再重新獲取容量res=exf_getfree("1:",&dtsize,&dfsize);返回的值是0x0c,而不是0,請問這是什么原因?
新作的板子要更新文件系統應該怎么做?是要掛載U盤,增加U盤的讀寫程序能后才能更新嗎?
|