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盘的读写程序能后才能更新吗?
|