FATFS函数

来源:互联网 发布:软件可靠性加速测试 编辑:程序博客网 时间:2024/06/05 07:43

 

FATFS fs;  //逻辑磁盘工作区.FIL file;  //文件1UINT br,bw;//读写变量FILINFO fileinfo;//文件信息DIR dir;  //目录FRESULT res;//返回值u8 fatbuf[512];//sd卡缓存区


 

下面是主要的几个函数

 

FRESULT f_mount (  BYTE  Drive,             /* 逻辑驱动器号 */  FATFS*  FileSystemObject /* 工作区指针 */);


f_mount函数在FatFs模块上注册/注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作f_mount函数在FatFs模块上注册/注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作f_mount函数在FatFs模块上注册/注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作f_mount函数在FatFs模块上注册/注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作f_mount函数在FatFs模块上注册/注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作区。

要注销一个工作区,只要指定FileSystemObjectNULL即可,然后该工作区可以被丢弃。

 

f_open 创建/打开一个用于访问文件的文件对象FRESULT f_open (  FIL* FileObject,         /* 空白文件对象结构指针 */  const XCHAR* FileName,   /* 文件名指针 */  BYTE ModeFlags           /* 模式标志 */);

ModeFlags指定文件的访问类型和打开方法。它是由下列标志的一个组合指定的。

模式

描述

FA_READ

指定读访问对象。可以从文件中读取数据。
FA_WRITE结合可以进行读写访问。

FA_WRITE

指定写访问对象。可以向文件中写入数据。
FA_READ结合可以进行读写访问。

FA_OPEN_EXISTING

打开文件。如果文件不存在,则打开失败。(默认)

FA_OPEN_ALWAYS

如果文件存在,则打开;否则,创建一个新文件。

FA_CREATE_NEW

创建一个新文件。如果文件已存在,则创建失败。

FA_CREATE_ALWAYS

创建一个新文件。如果文件已存在,则它将被截断并覆盖。

如果函数成功,则创建一个文件对象。该文件对象被后续的读/写函数用来访问文件。如果想要关闭一个打开的文件对象,则使用f_close函数。如果不关闭修改后的文件,那么文件可能会崩溃。

 

 

 f_close 关闭一个打开的文件FRESULT f_close (  FIL* FileObject          /* 文件对象结构的指针 */);


f_read 从一个文件读取数据FRESULT f_read (  FIL* FileObject,         /* 文件对象结构的指针 */  void* Buffer,            /* 存储读取数据的缓冲区的指针 */  UINT ByteToRead,         /* 要读取的字节数 */  UINT* ByteRead           /* 返回已读取字节数变量的指针 */);

 

文件对象中的读/写指针以已读取字节数增加。该函数成功后,应该检查 *ByteRead来检测文件是否结束。在读操作过程中,一旦 *ByteRead < ByteToRead,则读/写指针到达了文件结束位置。

 

 

f_write 写入数据到一个文件FRESULT f_write (  FIL* FileObject,         /* 文件对象结构的指针 */  const void* Buffer,      /* 存储写入数据的缓冲区的指针 */  UINT ByteToWrite,        /* 要写入的字节数 */  UINT* ByteWritten        /* 返回已写入字节数变量的指针 */);

 

文件对象中的读/写指针以已写入字节数增加。该函数成功后,应该检查 *ByteWritten来检测磁盘是否已满。在写操作过程中,一旦 *ByteWritten < *ByteToWritten,则意味着该卷已满。

 

f_opendir打开一个目录FRESULT f_opendir (  DIR* DirObject,          /* 空白目录对象结构的指针 */  const XCHAR* DirName     /* 目录名的指针 */);

f_opendir函数当_FS_MINIMIZE <=1时可用。

f_opendir函数打开一个已存在的目录,并为后续的调用创建一个目录对象。该目录对象结构可以在任何时候不经任何步骤而被丢弃。

 

 

f_readdir读取目录项FRESULT f_readdir (  DIR* DirObject,          /* 指向打开的目录对象结构的指针 */  FILINFO* FileInfo        /* 指向文件信息结构的指针 */);

f_readdir函数当_FS_MINIMIZE <=1时可用。

f_readdir函数顺序读取目录项。目录中的所有项可以通过重复调用f_readdir函数被读取。当所有目录项已被读取并且没有项要读取时,该函数没有任何错误地返回一个空字符串到f_name[]成员中。当FileInfo给定一个空指针时,目录对象的读索引将被回绕。

LFN功能被使能时,在使用f_readdir函数之前,文件信息结构中的lfnamelfsize必须被初始化为有效数值。lfname是一个返回长文件名的字符串缓冲区指针。lfsize是以字符为单位的字符串缓冲区的大小。如果读缓冲区或LFN工作缓冲区的大小(对于LFN)不足,或者对象没有LFN,则一个空字符串将被返回到LFN读缓冲区。如果LFN包含任何不能被转换为OEM代码的字符,则一个空字符串将被返回,但是这不是Unicode API配置的情况。当lfname是一个空字符串时,没有LFN的任何数据被返回。当对象没有LFN时,任何小型大写字母可以被包含在SFN中。

当相对路径功能被使能(_FS_RPATH == 1)时,"."".."目录项不会被过滤掉,并且它将出现在读目录项中。

 

 记住每次操作完文件之后 记得关闭文件


 

 

原创粉丝点击