<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
https://static.assets-stash.eet-china.com/album/old-resources/2009/12/1/ac1699f4-963a-4f9b-a237-4f5e0f9cfb50.rar在智林stm32开发板上使用,利用串口输入命令fread和fwrite可以读写文件,但现在问题还比较多。有时间再具体分析。不过总算可以读写文件了。
这两天把FatFS移植到了我的开发板上,已经可以读写文件了。
但是移植过程中也出了一些问题:
(1)刚开始,读文件不能成功。我的读函数是这样的,参照了网上公布的源代码。
res = f_mount(0, &fs);
res = f_open(&file, "abc.txt", FA_OPEN_EXISTING | FA_READ);
if(res!=FR_OK)
{ Uart_PutString ("Open file failed\r\n"); }
for(i=0;i<512;i++)
{ data = 0; }
while(1)
{
if(fgets(data, sizeof(data), &file)==0)
{ break; }
Uart_PutString((u8*)data);
}
f_close(&file);
单步调试进去,发现不能识别FAT32文件系统,做了如下修正,读写就成功了。
#define _FAT32 1 原来是0,改为1,因为我的SD卡格式成了FAT32格式。
(2)读的问题解决了,但写入总是不成功。经过调试发现问题出在扇区写函数操作时,如果每次写操作时,单步过去,能写入。什么原因不太清楚,我的解决方法是:
u32 i="100000";
if (drv || !count)
{
return RES_PARERR; //仅支持单磁盘操作,count不能等于0,否则返回参数错误
}
// 读写操作
if(count == 1)
{
res = SD_WriteBlock(sector, buff);
while ( i-- );
}
else
{
res = SD_WriteMultiBlock(sector, (u32)count, buff);
}
每次写完一个扇区后,稍作停顿,利用while ( i-- ),而且这个数值不能太小,10000和50000都不行,调到100000才成功。
(3)操作方法:
利用fwrite指令可写入文件,利用fread命令读出文件,最近比较忙,没有时间详细写分析过程了,有兴趣的朋友可以阅读源代码。
文章评论(0条评论)
登录后参与讨论