我在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. php 高级 提高PHP代码的性能10条建议

    1.echo比print要快很多.两个方法都会在页面上打印东西,不过echo不返回任何值,print会在成功或失败的时候返回0或1. 2.include_once比include更加耗时.因为它需要去 ...

  2. PAT T1016 Uniqueness of MST

    dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; ; const int inf ...

  3. windows下 DEV-C++无法连接到pthread.h的解决办法

    参考的这个博文,原博文有图片:http://lslin.iteye.com/blog/776325 (我只是为了方便写.copy一遍) dev-C++编写C/C++程序时,非常方便轻巧,但是今天学习多 ...

  4. 记一次安装体验:pwn工具

    几天前删了JDK,结果和VM在一个目录中,结果VM全没了,重安走起 记载一下安装虚拟机出现的问题,官网一个字....慢,于是找了百度网盘,据说win10版本太低没法用,我就下了vw15.5.0(建立在 ...

  5. 学习笔记(16)- InsuranceQA_zh

    仓库地址:https://github.com/l11x0m7/InsuranceQA_zh Convolutional Neural Network for Chinese InsuranceQA ...

  6. Intellij IDEA 快捷键 与 环境设置

    快捷键 Ctrl+Shift+F10,运行 Ctrl+Alt+O,导入包,自动修正 Ctrl+Alt+L,格式化代码 Ctrl+Y,删除一整行 Alt + Insert,生成get/set方法 Ctr ...

  7. Jquery 获取控件的值

    1:通过控件的ID 获取值 $("input[name='weiKuanDate']").val(); 2:通过控件的name 获取值 $("input[name='we ...

  8. Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群

    一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...

  9. 111、Java中String类之字符串文本全部拆分

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  10. SLT学习——leafes tree扩展 【文艺平衡树】

    这是一个全新的数据结构 md,别看这篇文章了,这篇已经废了. 百折不饶,再交一次,更新复杂度证明 这里是HYF,蒟蒻一只,最近因某些原因开始学数据结构了,然后就写了这篇题解. 下面给大家介绍一个全新的 ...