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); //该函数成功后,文件对象不再有效,并且可以被丢弃。