FATFS写入数据全是0

2019-07-20 07:16发布

用的是STM32F405+R0.09的FATFS。加入给你一张刚格式化的干净的卡,就做简单的读写测试,是没问题的。连续的短时间写入也没问题的。
但是,我程序是用定时器连续的将惯性数据以每隔5分钟的频率就新建一个文件存储数据,当存储的文件数大于几十个的时候(每个文件821KB),比如90个,后面的写入不会提示错误,文件也创建了,文件大小也有了。但是数据全部都是0.也就是说文件名称是有的,PC上也显示文件的大小,但是读取的数据全部都是0
PS:大家可以把焦点更多放在TF卡的文件系统各种限制上,因为一般写入几十个文件都不会出问题的。有没有遇到过同样的问题,万分感激啊






初始化:
        fs = &fatfs;

        res=f_mount(0, fs);

递增创建文件的代码:
  do
    {
        sprintf(file_name,"imu/IMU_%d.1bsn",file_num);
        if(flag_format==1)
        break;
        res = f_open( &fsrc,(char*)file_name, FA_CREATE_NEW | FA_WRITE);
                printf("扫描中....%s,创造返回代码:%d ",file_name,res);
          if(res==FR_EXIST)
          file_num++;
    }while(res!=FR_OK);
                printf("创造完毕,刚才创造的文件名为:%s.. ",file_name);

写入的代码:
  res = f_write(&fsrc,TF_Packet,sizeof(TF_Packet), &br);


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
mnz119
1楼-- · 2019-07-20 07:19
          LED_Count++;
                                          if(LED_Count>50)
                                          {
                                                 LEDR_TOG;
                                                 
                                                   f_sync(&fsrc);//每隔不到1秒钟就存盘一次数据
                                                   // f_close(&fsrc);
                                                LED_Count=0;
                                          }

我每隔几十毫秒,就调用了一次f_sync(&fsrc);
因此不是这个函数没调用的问题,是写入了不是0的数据, 但是读取的是时候就是一大片的0
mnz119
2楼-- · 2019-07-20 07:48
 精彩回答 2  元偷偷看……
mnz119
3楼-- · 2019-07-20 11:31
继续,顶起,欢迎交流!
正点原子
4楼-- · 2019-07-20 14:09
你决定文本阅读就可以打开所有文件内容么? 你试试拖一个pdf进去,看看效果。  然后,你搞懂什么是ASCII,什么是汉字内码?  然后你看看你的写入数组,里面都是些什么内容?
haozhengnaxi
5楼-- · 2019-07-20 18:42
 精彩回答 2  元偷偷看……
szczyb1314
6楼-- · 2019-07-20 22:03
打开文件不要用 FA_CREATE_NEW这个创建新文件好不,每次都重新创建一个新文件覆盖旧文件能不是全0吗

一周热门 更多>