请教大家一个问题,就是我移植了FATFS9.0的文件系统,读取512byte是没有问题的,可是当读取大于512byte的字节就有问题,具体如下:
(有部分代码省略)
第一种代码,buffer[512]复用,串口无输出:
//FAT缓冲区
unsigned char FatBuffer[512]={0};
res = f_mount(0, &fs );
res = f_open ( &dst , "0:TEST.txt" , FA_OPEN_EXISTING | FA_READ ) ;
for (;;)
{
//清除缓存
for(i=0;i<sizeof(FatBuffer);i++) FatBuffer=0;
res = f_read(&dst, FatBuffer, sizeof(FatBuffer), &br);
if (res || br == 0) break; // error or eof
printf("%s",FatBuffer);//串口输出文件内容,但是测试结果串口无输出,让其返回res也无返回
}
第二种代码,建立buffer[8][512],即可读取8个512字节的数据,并显示出来,代码如下:
//FAT缓冲区
unsigned char FatBuffer1[8][512]={0};
res = f_mount(0, &fs );
res = f_open ( &dst , "0:TEST.txt" , FA_OPEN_EXISTING | FA_READ ) ;
for (i=0;i<8;i++)
{
res = f_read(&dst, FatBuffer1, sizeof(FatBuffer1), &br);
if (res || br == 0) break; // error or eof
printf("%s",FatBuffer1); //串口输出文件内容
}
不知道有没有人遇到这样的问题,想知道大家对文件系统的操作,读取的字节超过一个buffer的话,是怎么读取的?要建那么多个buffer吗?
还有,小弟还遇到另一个类似的问题:程序刚开始会读取SD卡信息,存在buffer1,串口打印出来,然后再执行文件系统操作,此时如果文件系统也用buffer1的话,那么串口则没有输出,程序会卡在initial success……;如果再新建一个buffer2给文件系统,则一切正常……
想了很久没想明白,上来求助~~ |