FATFS 开源FAT文件系统

详见官网:http://elm-chan.org/fsw/ff/00index_e.html  

FATFS是一个专为小型嵌入式系统调计的通用文件系统模块。FATFS是用ANSI C(标准C语言)相兼容的语法书写,并且完全地实现了与磁盘IO层分离,因此它是与硬件无关的。它完全不需要任何修改就能被集成到低成本的微控器(MCU)中,例如 AVR, 8051, PIC, ARM, Z80, 68k等。

FATFS分为全功能和精简版的

特性

与WINDOWS FAT相兼容的文件系统。

与平台无关,便于移植。

对代码存储器的大小和运行时所需RAM的大小及其它硬件性能要求很低,

所以FATFS可以很好地运用在低成本的嵌入式系统中。

多样化的配置

多卷标的支持(包含多磁盘和多分区)。

在DBCS中包含了多种OEM码页。

长文件名(LFN)支持,支持OEM码和UNICODE。

可集成到实时操作系统(RTOS)中。

多样化的扇区大小支持。

只读模式、最小化API、可配置的I/O缓冲等等。

应用层程序结口如下

f_mount - 注册和取消工作区

f_open - 打开或者创建文件

f_close -关闭一个文件

f_read - 从文件中读取数据

f_write -向 文件中写入数据

f_lseek - 移动文件读指针(RP),扩展文件大小

f_truncate - 缩减文件大小

f_sync - 清空缓存数据,实现数据同步

f_opendir - 打开一个目录

f_readdir - 列举目录中的条目(包括文件和子目录)。

f_getfree - 获取可用簇

f_stat - 获取文件属性

f_mkdir - 创建文件

f_unlink - 删除文件或者目录

f_chmod - 更改属性

f_utime -更改时间戳

f_rename - 重命名或者移动一个文件或目录

f_mkfs - 格式化磁盘

f_forward - 将文件数据直接送入数据流中

f_chdir - 改变当前所在目录

f_chdrive - 改变当前所在驱动器

f_gets -读字符串

f_putc - 写一个字符

f_puts - 写字符串

f_printf - 写入一个格式化字符串

磁盘I/O接口

disk_initialize - 磁盘初始化

disk_status - 获取磁盘属性

disk_read - 读扇区

disk_write - 写扇区

disk_ioctl - 独立的磁盘控制资源

get_fattime - 获取时间

相关资源

FATFS是一个免费的开源软件,可用于教学,研究和开发。

你可以任意地修改或者发布它,你能够无限制的在非盈利或者商业产品中使用它。

你能在本文上方的下载链接中获取最新版本。

 

 

f_open
创建/打开一个用于访问文件的文件对象

FRESULT f_open (
 FIL* FileObject,         /* 空白文件对象结构指针 */
 const XCHAR* FileName,   /* 文件名指针 */
 BYTE ModeFlags           /* 模式标志 */
);
参数
FileObject
将被创建的文件对象结构的指针。
FileName
NULL结尾的字符串指针,该字符串指定了将被创建或打开的文件名。
ModeFlags
指定文件的访问类型和打开方法。它是由下列标志的一个组合指定的。
模式 描述
FA_READ 指定读访问对象。可以从文件中读取数据。
与FA_WRITE结合可以进行读写访问。
FA_WRITE 指定写访问对象。可以向文件中写入数据。
与FA_READ结合可以进行读写访问。
FA_OPEN_EXISTING 打开文件。如果文件不存在,则打开失败。(默认)
FA_OPEN_ALWAYS 如果文件存在,则打开;否则,创建一个新文件。
FA_CREATE_NEW 创建一个新文件。如果文件已存在,则创建失败。
FA_CREATE_ALWAYS 创建一个新文件。如果文件已存在,则它将被截断并覆盖。
注意:当 _FS_READONLY == 1 时,模式标志 FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS 是无效的。

 

例: 

sprintf(name,"Pen_%03d.pen",iFile);

//如果文件存在,则打开;否则,创建一个新文件。   且文件读和写
    f_res = f_open(&file, name, FA_OPEN_ALWAYS | FA_WRITE | FA_READ);      //FA_CREATE_ALWAYS  FA_CREATE_NEW

猜你喜欢

转载自blog.csdn.net/eydj2008/article/details/81110449