专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

Rainbow读写TF卡中的文件

作者:白栎旸   来源:本站原创   点击数:  更新时间:2014年04月30日   【字体:

    Rainbow板载一个TF卡的卡座,可以直接插入TF卡。Rainbow成功移植了Fatfs文件系统,可以直接使用Fatfs的函数对文件进行读写,同时,为了简化对文件的操作,开发包中封装了对文件读写类库,可以更加方便对文件进行读写。


    考虑到嵌入式系统的特点,文件系统有一些小的限制:
    1、文件名长度最大不超过8个字符,后缀名不超过3个字符
    2、不支持中文文件名
 
    Rainbow采用C++对fatfs进行了封装,对文件读写变得更加简单,我们看看文件读写的步骤:
    1、定义FileStream对象:FileStream file(fileName, FA_OPEN_ALWAYS | FA_WRITE);
       在定义的时候需要指定要打开的文件全路径以及文件打开的方式,以写的方式打开文件,如果文件不存在,会产生异常,需要加上FA_OPEN_ALWAYS,FA_WRITE表示以写的方式打开,FA_READ表示已读的方式打开文件
 
    2、可以通过if(file)来判断文件是否打开成功,如果打开成功,if条件成立
 
    3、如果文件打开成功,接下来就可以调用
       file.write((uint8_t *)Write_Buffer, BUFFER_SIZE)或者
       file.read((uint8_t *)Read_Buffer, BUFFER_SIZE)
       来对文件进行读写操作
 
    4、文件读写完毕,调用file.close()关闭文件
 
    在软件包的“Projects\File”文件夹包含了本文的完整工程,可以直接编译、烧写和调试。这个程序主要展示如何对TF中文件进行读写,看看main.cpp的代码:
#include "WProgram.h"
#include "File.h"
 
#define countof(a) (sizeof(a) / sizeof(*(a)))
#define BUFFER_SIZE (countof(Write_Buffer)-1)
 
uint8_t Write_Buffer[] = "STM32F10xx Fatfs Demo";
uint8_t Read_Buffer[BUFFER_SIZE];
 
int main()
{
  boardInit();
  Serial.begin();
  Serial.println("Fatfs demo start...");
 
  //读写TF卡的根目录中的demo.txt
  String fileName = "/demo.txt";
  //以写的方式打开一个文件,写入字符串
  //为了测试完整的读写过程,我们没有以读写方式打开文件,而是先以写的方式打开,然后关闭,然后再以读的方式打开读取写入内容
  FileStream file_w(fileName, FA_OPEN_ALWAYS | FA_WRITE);
  if(file_w)
  {
    if(file_w.write((uint8_t *)Write_Buffer, BUFFER_SIZE) == BUFFER_SIZE)
    {
      Serial.print("Write \"");
      Serial.print((char *)Write_Buffer);
      Serial.println("\" to demo.txt ... ");
    }
  }
 
  //写入完毕,关闭文件
  file_w.close();
  //以读的方式打开demo.txt
  FileStream file_r(fileName, FA_READ);
  if(file_r)
  {
    if(file_r.read((uint8_t *)Read_Buffer, BUFFER_SIZE) == BUFFER_SIZE)
    {
      Serial.print("Read \"");
      Serial.print((char *)Read_Buffer);
      Serial.println("\" from demo.txt ... ");
    }
  }
 
  //读取完毕,关闭文件
  file_r.close();
  Serial.println("Fatfs demo end...");
}
 
    上面的程序编译无误后,将程序烧写到Rainbow中,然后在电脑上运行串口调试工具并和Rainbow连接成功,可以在串口调试工具中看到文件读写的日志。将TF卡从Rainbow中取出,放到电脑上可以看到在根目录中创建了一个demo.txt,打开demo.txt后可以看到里面保存的内容正是我们写入的信息。
关闭窗口

相关文章