移植fatfs到stm32上可以再SD卡中建立文件但是不能读取文件

[复制链接]
10211|12
 楼主| adqprint 发表于 2011-7-19 16:16 | 显示全部楼层 |阅读模式
大家好:
    我移植的程序能写进去,但是不能读,请大家帮忙看看。
    首先是写,在sd卡建立一个123.txt。然后在里面写数据,程序为
const unsigned char fat[512] ={ "123456"  };
char buf[512];
int main(void)
{
    FATFS *fs,fatfs;            // Work area (file system object) for logical drive
    FRESULT res;         // FatFs function common result code      
    FIL fsrc;            // file objects
    UINT br;
    RCC_Config();
    USART_Config();
    fs = &fatfs;
   f_mount(0, fs);
    res = f_open(&fsrc, "123.txt", FA_CREATE_ALWAYS  | FA_WRITE);
    res = f_write(&fsrc, fat, 512, &br);
    f_close(&fsrc);
    f_mount(0, NULL);
    while (1)
    {
    }
}
这个程序正常,能够建立123.txt并且写入123456等数据,下面是读
int main(void)
{
    FATFS *fs,fatfs;            // Work area (file system object) for logical drive
    FRESULT res;         // FatFs function common result code      
    FIL fsrc;            // file objects
    UINT br;
    RCC_Config();
    USART_Config();
    fs = &fatfs;
   f_mount(0, fs);
    res = f_open(&fsrc, "123.txt", FA_OPEN_EXISTING | FA_READ);
    res = f_read(&fsrc, buf, 512, &br);
    f_close(&fsrc);
    f_mount(0, NULL);
    while (1)
    {
    }
}
这个程序就读不出来我以前写入的数据,读出来全是0.我用仿真器跟了一下,发现在f_open这个函数中的
fp->fsize = LD_DWORD(&dir[DIR_FileSize]);这个fp->fsize为0.请大家帮帮忙看看这是为什么?

生成的文件用usb读卡器查看

生成的文件用usb读卡器查看

SD_FAT2(ok).zip

1.11 MB, 下载次数: 267

完整的工程文件

lattice1 发表于 2011-7-21 12:33 | 显示全部楼层
不能读是说不能读到MCU里面?
 楼主| adqprint 发表于 2011-7-21 13:19 | 显示全部楼层
对。MCU在执行f_open这个函数时,读取的时候读出文件的大小是0,因此不再往下进行,得不到写入的数据。可是我的文件大小肯定不是0.
allensionZ 发表于 2013-1-4 17:35 | 显示全部楼层
问题解决了吗,我stm32在nandflash上建立的fatfs也是可以写但是不能读,一调用f_read就跳到HardwareFault死循环了,求交流...
MariaBrook 发表于 2013-1-14 11:30 | 显示全部楼层
allensionZ 发表于 2013-1-4 17:35
问题解决了吗,我stm32在nandflash上建立的fatfs也是可以写但是不能读,一调用f_read就跳到HardwareFault死 ...

HardwareFault是不是因为程序在函数里建立太大的数组溢出导致的?
MariaBrook 发表于 2013-1-14 11:38 | 显示全部楼层
在open操作之前,先要进行打开根目录的操作:
if(f_opendir(&dirs, "/") != FR_OK)

评论

使用您这种方法也没解决  发表于 2018-8-30 17:14
just0511 发表于 2013-8-7 00:26 | 显示全部楼层
mARK 一下
kylin56 发表于 2016-7-18 15:50 | 显示全部楼层
我的用内部FLASH做的FASFS,只能写不能读
忧忧 发表于 2016-11-15 14:18 | 显示全部楼层
谢谢  ,解决了我的问题

评论

您好您怎么解决的,我也是同样的问题  发表于 2018-8-30 17:13
foucsY 发表于 2017-7-19 11:23 | 显示全部楼层
忧忧 发表于 2016-11-15 14:18
谢谢  ,解决了我的问题

你好,我也遇到了和你同样的问题,文件能正常写入,但是读取时发现长度为0,请问这是什么问题?
yyjzd 发表于 2018-2-23 13:19 | 显示全部楼层
能否烦劳大侠发些干货,也为此事犯愁中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

60

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部