这段时间老师布置了个小课题,如何提高SD卡读取速度。在做测试的过程中,将SD卡内存写满了,
U盘插电脑上一直读不出SD卡的内容,倒腾了一下午都没有解决。
最后通过调用FATFS文件系统的格式化函数,将SD卡进行初始化,总算是把数据给清除了
f_mkfs函数的使用方法可以在http://www.elm-chan.org/fsw/ff/doc/mkfs.html上查看
FIL fil;
FRESULT res;
UINT bww;
char buf[100];
int main(void)
{
u32 total,free;
u8 t=0;
u8 res=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200);
LED_Init();
usmart_dev.init(84);
KEY_Init();
W25QXX_Init();
my_mem_init(SRAMIN);
my_mem_init(SRAMCCM);
while(SD_Init())
{
printf("SD Card Error!\r\n");
delay_ms(500);
printf("Please Check!\r\n");
delay_ms(500);
LED0=!LED0;
}
exfuns_init();
f_mount(fs[0],"0:",1);
res=f_mount(fs[1],"1:",1);
if(res==0X0D)
{
printf("Flash Disk Formatting...\r\n");
res=f_mkfs("1:",1,4096);
if(res==0)
{
f_setlabel((const TCHAR *)"1:ALIENTEK");
printf("Flash Disk Format Finish\r\n");
}
else
{
printf("Flash Disk Format Error\r\n");
}
delay_ms(1000);
}
printf("1");
res = f_mkfs(0,0,4096);
while(exf_getfree("0",&total,&free))
{
u8 res2;
res2=exf_getfree("0",&total,&free);
printf("SD Card Fatfs Error!,返回值: %d\r\n",res2);
res = f_mkfs(0, 1, 4096);
printf("SD Card Fatfs !,返回值: %d\r\n",res);
delay_ms(200);
printf("WHITE!\r\n");
delay_ms(200);
LED0=!LED0;
}
printf("FATFS OK!\r\n");
}
只需要res = f_mkfs(0,0,4096); 这一句代码,就可以将SD卡格式化,当然基本的SD卡初始化和挂载SD卡还是需要的。
如有需要代码的可以私信博主,免费提供