FatFs 0.09b 常用函数(一)

f_mount,f_mkfs,f_open,f_close


(1) f_mount  注册/注销一个工作区

FRESULT f_mount( 
    BYTE  Drive,
    FATFS*  FileSystemObject
);

参数:

    Drive 注册/注销工作区的逻辑驱动器号(0-9)。 

    FileSystemObject 工作区(文件系统对象)指针。

返回值:

    FR_OK (0)函数成功。

    FR_INVALID_DRIVE 驱动器号无效

举例:

    f_mount(0,&SdCard); //注册一个工作区 
    f_mount(0,NULL); //注销一个工作区

 


(2) f_mkfs  格式化、在驱动器上创建一个文件系统

FRESULT f_mkfs ( 
BYTE  Drive,
BYTE  PartitioningRule,
WORD  AllocSize
);

参数:


    Drive 逻辑驱动器号(0-9)。 

    PartitioningRule 分区规则。

  • 0:在驱动器上的第一个扇区创建一个分区表,然后文件系统被创建在分区上。称为FDISK格式化,用于硬盘和存储卡。推荐使用。

  • 1:文件系统从第一个扇区开始创建,没有分区表。这被称为超级软盘(SFD)格式化,用于软盘和可移动磁盘。

  • 该函数当前不支持多分区, 因此,物理驱动器上已存在的分区将被删除,并且重新创建一个占据全部磁盘空间的新分区。

    AllocSize  分配单元大小,指定每簇中以字节为单位的分配单元大小。数值必须是0或从512到32K之间2的幂。当指定0时,簇大小取决于卷大小。

返回值:

    FR_OK (0)函数成功。 

    FR_INVALID_DRIVE 驱动器号无效。 

    FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 

    FR_WRITE_PROTECTED驱动器被写保护。 

    FR_NOT_ENABLED逻辑驱动器没有工作区。 

    FR_DISK_ERR 由于底层磁盘 I/O函数中的错误,而导致该函数失败。 

    FR_MKFS_ABORTED 由于下列原因之一,而导致函数在开始格式化前终止: 

  • 磁盘容量太小 

  • 参数无效 

  • 该驱动器不允许的簇大小。

举例:

    f_mkfs(0,0,4096);

 


(3) f_open  创建/打开一个文件

FRESULT f_open( 
    FIL* FileObject,
    const XCHAR* FileName,
    BYTE ModeFlags
);

参数:

    FileObject 将被创建的文件对象结构的指针。 

    FileName 文件名指针,含路径

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

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

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

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

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

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

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

返回值:

    FR_OK (0)函数成功,该文件对象有效。 

    FR_NO_FILE 找不到该文件。 

    FR_NO_PATH找不到该路径。 

    FR_INVALID_NAME 文件名无效。 

    FR_INVALID_DRIVE 驱动器号无效。 

    FR_EXIST 该文件已存在。 

    FR_DENIED由于下列原因,所需的访问被拒绝: 

  • 以写模式打开一个只读文件。 

  • 由于存在一个同名的只读文件或目录,而导致文件无法被创建。 

  • 由于目录表或磁盘已满,而导致文件无法被创建。 

    FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 

    FR_WRITE_PROTECTED在存储介质被写保护的情况下,以写模式打开或创建文件对象。 

    FR_DISK_ERR 由于底层磁盘 I/O接口函数中的一个错误,而导致该函数失败。 

    FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 

    FR_NOT_ENABLED逻辑驱动器没有工作区。 

    FR_NO_FILESYSTEM 磁盘上没有有效地 FAT 卷。

举例:

    f_open(&fl,"0:temp.txt", FA_READ);
    f_open(&fl,"0:Data/temp.txt", FA_WRITE|FA_OPEN_ALWAYS);

 


(4) f_close  关闭一个打开的文件

FRESULT f_close( 
  FIL* FileObject     
);

参数:

    FileObject 指向将被关闭的已打开的文件对象结构的指针。

返回值:

    FR_OK (0)文件对象已被成功关闭。

    FR_DISK_ERR 由于底层磁盘 I/O函数中的错误,而导致该函数失败。

    FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 

    FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 

    FR_INVALID_OBJECT 文件对象无效。

举例:

    f_close(&fl); //该函数成功后,文件对象不再有效,并且可以被丢弃。
标签:C/MCUFatFs

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=42