打印
[其他ST产品]

SD卡的文件系统

[复制链接]
1234|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunshine1990|  楼主 | 2014-9-1 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunshine1990 于 2014-9-2 15:46 编辑

我在用SD的文件系统,有个很奇怪的问题,不加断点程序一直跑之后把用电脑读SD卡里面的文件是空的,在 f_open函数和f_write函数前面加断点发现f_write执行完以后 fsrc.fsize的值是正常增加的,但是f_open执行完以后 fsrc.fsize会减少,这是什么原因啊
f_mount(0, &fs);//注册工作区
    Can_Delayms(1000);
    f_chdrive(0);
    res = f_open(&fsrc, "obd1.txt" ,  FA_OPEN_ALWAYS | FA_WRITE|FA_READ);
            if (res == FR_OK)
            {
              sd_wrnum=0;
              Can_Delayms(100);
              res = f_lseek(&fsrc, fsrc.fsize);
              Can_Delayms(100);
              if (res == FR_OK)
              {
                  res = f_write(&fsrc, sd_write, sizeof(sd_write), &bw);
                  
                 if(res==0)
                  {
                    if(bw!=sizeof(sd_write))
                    {
                      res=f_close(&fsrc);
                      res=f_unlink("obd1.txt");
                    }
                    
                  }
       res=f_close(&fsrc);//在这里加断点以后运行 f_open函数 后 fsrc.fsize的值 不变
       f_mount(0, NULL);
沙发
sunshine1990|  楼主 | 2014-9-3 17:29 | 只看该作者
还有个问题,不加断点执行程序以后把板子断电,SD卡取出后用读卡器在电脑上读取的时候文件是存在的,但是双击打开文件时显示文件已损坏,这又是什么原因啊

使用特权

评论回复
板凳
sunshine1990|  楼主 | 2014-9-8 17:14 | 只看该作者
大家帮忙看看啊,我现在怀疑问题出现在f_close 函数,在执行该函数的时候文件的缓存信息没有被写回到磁盘,所以导致数据没有被写进SD卡的物理扇区,但是我又找不到解决这个问题的办法

使用特权

评论回复
地板
wangguiyuan1983| | 2014-9-13 18:05 | 只看该作者
路过学习!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝