STM32读写TXT文件(可追加数据)的示例代码

发布者:legend8最新更新时间:2018-09-16 来源: eefocus关键字:STM3  追加数据  TXT文件 手机看文章 扫描二维码
随时随地手机看文章

/*

说明:

*    下面的函数是测试在已有的"大海.txt"文件下继续添加数据

*    测试条件在TF卡中建立"大海.txt"文件,并在文件中添加内容,测试过程中可以分别添加<512数据,=512数据,>512数据进行分别测试

*    作者:Flame

*    测试时间:20130711

*/

unsigned int FATFSNumSize;//文件大小存储变量,为了查看方便放到函数外部

void OutPutFile(void)

unsigned int a;

FILINFO finfo;

DIR dirs;

char path[50]={""};                                                            //目录名为空,表示是根目录

//开启长文件名功能时, 要预先初始化文件名缓冲区的长度 

#if _USE_LFN

static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];

finfo.lfname = lfn;

finfo.lfsize = sizeof(lfn);

#endif

USART_OUT(USART1,"\nSTM32开发板文件系统(Tini-FatFS0.08b)启动成功! \n");

disk_initialize(0);    //fatfs可以管理多个介质的分区, 所以把物理存储介质SST25VF016B标示为0区,相当于磁盘编号

f_mount(0, &fs);        //将文件系统设置到0区 

if (f_opendir(&dirs, path) == FR_OK)      //读取该磁盘的根目录        

{

   while (f_readdir(&dirs, &finfo) == FR_OK)    //循环依次读取文件名

   {         

      if (finfo.fattrib & AM_ARC)        //判断文件属性是否为存档型      TXT文件一般都为存档型

      {

         if(!finfo.fname[0]) break; //如果是文件名为空表示到目录的末尾。退出         

         if(finfo.lfname[0]){USART_OUT(USART1,"\r\n文件名是:\n   %s\n",finfo.lfname);}     //输出长文件名

         else{USART_OUT(USART1,"\r\n文件名是:\n   %s\n",finfo.fname);}       //输出8.3格式文件名                

         if(finfo.lfname[0]){res = f_open(&fsrc, finfo.lfname, FA_OPEN_EXISTING | FA_READ);}//以读的方式打开文件

         else{res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ); }     //8.3格式文件名 以读的方式打开文件

         FATFSNumSize = f_size(&fsrc);  //读出文件的大小,说明读取文件大小必须在打开文件后才能读出

         br=1;

         for (;;) 

         {                                                                                                                                //循环读出被打开文件的扇区

             for(a=0; a<512; a++) buffer[a]=0;        //因为可以一次读出512字节,先清空数据缓冲区 

             res = f_read(&fsrc, buffer, sizeof(buffer), &br);    //将文件内容读出到数据缓冲区  br存储此次读出数据的数量,最大512

             USART_OUT(USART1,"%s\n",buffer);         //将缓冲区的内容输出到串口1

             if (res || br == 0) break;   // error or eof      //判断是否到文件结束

         }

         f_close(&fsrc);      //关闭源文件

         res1 = f_open(&fdst, "大海.txt", FA_CREATE_ALWAYS | FA_WRITE);          //以写的方式打开"大海.txt"文件

         if(finfo.lfname[0])                

         {

           res = f_open(&fsrc, finfo.lfname, FA_CREATE_ALWAYS | FA_WRITE); //以写的方式打开文件

         } else {

           res = f_open(&fsrc, finfo.fname,  FA_CREATE_ALWAYS | FA_WRITE); //8.3格式文件名 以写的方式打开文件

         }     

         for(a=0; a<512; a++) buffer[a]=0x36;             //往buffer中写入512个6

         f_lseek(&fsrc,FATFSNumSize);                     //偏移到打开文件内容的后面

         //在这里要重点说明的是如果numSize<512将会把数据覆盖,如果numSize>512切numSize%512得到的余数将会覆盖,所有如果numSize不是512的整倍数,要单独做处理

         //我的方法是读取这不到1个扇区的数据,放到缓冲区,然后将512-numSize%512的数据填入缓冲区,写入TF(SD)卡数据,然后再写剩余的数据

         br=512; //写入512个数据

         res1 = f_write(&fsrc, buffer, br, &bw);                                                                                      f_close(&fsrc);//关闭目标文件 本条函数即时保存写入的数据,又是关闭目标文件,如有很多数据要写入,但不需要现在关闭可以调用f_sync函数,但是调用 f_sync前必把S_READONLY == 0可用

     }

   } 

 } 

}


关键字:STM3  追加数据  TXT文件 引用地址:STM32读写TXT文件(可追加数据)的示例代码

上一篇:基于STM32F407平台实现FATFS读写大容量(128G)SD卡的心得
下一篇:基于STM32的SD卡FATFS文件系统学习笔记

推荐阅读最新更新时间:2024-03-16 16:14

STM3的TIM4定时器功能设置
一、初始化过程 /*********************************************************************** 利用TIM4定时器作为计时,每个0.1秒处理一次数据 计算周期的公式为: psc/72*period/1000000 (单位为秒) ************************************************************************/ void TIM2_Config(void) { TIM_TimeBaseInitTypeDef TIM_timeBaseStucture; TIM_OCInitTypeDef T
[单片机]
基于STM32的平衡小车设计过程分享(2)
一、简介 续上文,电机驱动部分完成,接下来我们给他加上一个OLED的显示功能和MPU6050的姿态检测功能 二、姿态角显示开发 2.1 MPU6050简介 MPU6050是一种集成了3轴陀螺仪和3轴加速度计的数字运动处理器。它由英飞凌公司开发,可用于测量物体的角速度、加速度和方向,广泛应用于机器人、无人机、游戏手柄、智能手机和运动监测等领域。MPU6050采用I2C接口进行通信,具有低功耗、高精度、小尺寸等特点,是一款非常优秀的运动传感器。 2.2 OLED简介 OLED(Organic Light Emitting Diode)是有机发光二极管,是一种新型的显示技术。与传统的液晶显示屏相比,OLED显示
[单片机]
基于STM32的平衡小车设计过程分享(2)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved