我在STM32中移植了fatfs文件系统,实现在SD卡对文件的读写。在普通读写中都没有问题,但是一旦我关闭文件系统,再次打开读写,之前写的数据就被覆盖。比如举个例子:
      u8 tx_buff[]="stm32f107学习!!!"  //发送缓冲1
      u8 tx_buff1[]="文件系统学习!!!!"//发送缓冲2
     FATFA fs;
     FIL  fsrc;
     FRESULT res;//读写状态值
   //初始化代码 都正常 能读到卡容量
      下面开始读写:
      f_mount(0,&fs);//注册文件系统
      res=f_open(&fsrc,"123.txt",FA_OPEN_ALWAYS|FA_WRITE);//如果存在则打开,不存在则创建
       if(res)
         {
          printf("\n\r打开文件错误:\n\r");
          f_close(&fsrc);
          }
    /////////现在写入数据
      res=f_write(&fsrc,tx_buff,BufferSize,&br);  //BufferSize为发送缓冲字节数 
     if(res||br==0)
          {
     printf("\n\r文件写入错误:\n\r");
     f_close(&fsrc);
    }
    f_close(&fsrc);//关闭
//////////////////////////////////////读出数据
    res=f_open(&fsrc,"123.txt",FA_OPEN_ALWAYS|FA_READ);//以读的方式打开
   res=f_read(&fsrc,fil_buffer,BufferSize,&bw); //读取数据
   if(res||bw==0)
          {
          printf("\n\r文件读取错误:\n\r");
       f_close(&fsrc);
        }      /////////////////到目前 读出的数据 正常为stm32f107学习!!!
f_close(&fsrc);//关闭
   res=f_open(&fsrc,"123.txt",FA_OPEN_ALWAYS|FA_WRITE|FA_READ);//   现在以读写的方式打开
   res=f_write(&fsrc,tx_buff1,BufferSize,&br);  //写入发送缓冲1中的数据    
   res=f_read(&fsrc,fil_buffer,BufferSize*2,&bw); //读取数据
   这个时候我以为读出的数据应该是stm32f107学习!!!文件系统学习!!!!
   但是读出来的只有文件系统学习!!!!也就是先前写入的tx_buff中的数据被tx_buff1中的数据覆盖了。
   查看f_open函数发现fp->fptr = 0;fp->dsect = 0;调用后每次打开文件会将指针清零,所以每次都从头写。
   如果追加文件则需要移动文件指针,f_lseek函数则派上用处了。此函数用于文件指针的移动,共有两个参数,第一个参数为文件对象,第二个参数为移动的字节数。在这里则F_LSEEK(&fsrc,fsrc.fsize)指向文件结尾,即可追加文件。注意第二个参数是相对于文件的开始,如F_LSEEK(&fsrc,3000),表示移动到文件开头3000个字节处。灵活使用可以方便的操作文件。

f_lseek的更多相关文章

  1. fatfs文件系统f_lseek追加文件

    http://home.eeworld.com.cn/my/space-uid-430378-blogid-74720.html 这个时候我以为读出的数据应该是stm32f107学习!!!文件系统学习 ...

  2. ebox学习之SD & fat 配置

    fatfs可配置项很多,相关的配置均在ffconfig.h文件中 /*----------------------------------------------------------------- ...

  3. SD卡fat文件系统移植

    经过充分的研究,发现fatfs文件系统移植的比较简单!因为代码都已经被别人做好了!我们只需把io层稍稍做个处理就ok了: 至于sd卡的驱动请看我这篇博客:http://blog.csdn.net/ie ...

  4. uCGUI字符串显示过程分析和uCGUI字库的组建

    为什么要分析字符串的显示过程? 学习uCGUI主要是学习如何使用的,为何要深究到源码的层次呢? 就分析字符串显示过程的原因来说,是因为移植汉字字库的需要.uCGUI并么有合适的汉字字库,而且完整的汉字 ...

  5. 8位灰度图在LCD上显示

    一.概述 1.灰度 灰度使用黑色调表示物体,即用黑色为基准色,不同的饱和度的黑色来显示图像.每个灰度对象都具有从 0%(白色)到灰度条100%(黑色)的亮度值. 使用黑白或灰度扫描仪生成的图像通常以灰 ...

  6. FatFsVersion0.01源码分析

    目录 一.API的函数功能简述 二.FATFS主要数据结构 1.FAT32文件系统的结构 2.FATFS主要数据结构 ①   FATFS ②   DIR ③  FIL ④  FILINFO ⑤  wi ...

  7. S3C2416裸机开发系列19_Fatfs播放录像wav音频文件

    S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩    1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...

  8. STM32单片机图片解码

    图片解码首先是最简单的bmp图片解码,关于bmp的结构可自行查阅,代码如下 #ifndef __BMPDECODE_H_ #define __BMPDECODE_H_ #include "f ...

  9. FATFS外置UNICODE GBK双向转换码表(转)

    源:FATFS外置UNICODE GBK双向转换码表 将UtoG,GtoU双向码表放到存储卡里面实现长文件名,因为FATFS长文件名需要unicode支持, 首先将UtoG.sys,GtoU.sys两 ...

随机推荐

  1. Dire Wolf HDU - 5115

    题目链接 一开始很自然的想到了贪心,跑了一下贪心,发现无法处理某一段已经被选走的情况,根据数据范围,区间dp比较适合,能储存区间取样信息 设dp[i][j]为已经杀死区间[i,j]的最小值,可以得到转 ...

  2. String类为什么是不可变的

    String类为啥是final的? 我们找到string的jdk源码 1.看到String类被final修饰.这里你就要说出被final修饰的类不能被继承,方法不能被重写,变量不能被修改. 2.看到f ...

  3. AStarPathFinding

    简单例子: https://blog.csdn.net/wingfourever/article/details/9274091 修饰符解释: https://zhuanlan.zhihu.com/p ...

  4. ElementUI el-message 提示信息的用法

    引入message Element 注册了一个$message方法用于调用,Message 可以接收一个字符串或一个 VNode 作为参数,它会被显示为正文内容. Element 为 Vue.prot ...

  5. python中 yield 的用法 (简单、清晰)

    首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...

  6. win10上安装mysql8(installer方式)并创建用户开启远程连接

    1.进去mysql官网,下载mysql安装工具: 2.运行下载的mysql-installer-community-8.0.17.0.msi,一次往下执行就好了,以下是几个注意的点: 后面还有个地方就 ...

  7. Java源码-集合-ArrayList

    基于JDK1.8.0_191 介绍   在Java中,对于数据的保存和使用有多种方式,主要的目的是以更少的资源消耗解决更多的问题,数组就是其中的一种,它的特点是所有的数据都保存在内存的一段连续空间中, ...

  8. 02-05Android学习进度报告五

    今天主要学习了关于Android 开发的关于进度条和拖动条的知识. 主要学习了一些关于进度条的基本属性: android:max:进度条的最大值 android:progress:进度条已完成进度值 ...

  9. 微信小程序引用外部js,引用外部样式,引用公共页面模板

    https://blog.csdn.net/smartsmile2012/article/details/83414642 ================小程序引用外部js============= ...

  10. 使用myeclipse搭建简单的maven工程

    请点击或者复制以下链接 http://opiece.me/2016/03/17/maven-and-ssmframework/