FatFS文件系统(每条指令讲的都很细)

FatFS⽂件系统(每条指令讲的都很细)
来源:blog.chinaunix/uid-20766895-id-2827635.html
FATFS是⼀个为⼩型嵌⼊式系统设计的通⽤FAT(File Allocation Table)⽂件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独⽴(不依赖)于硬件架构。它可以被嵌⼊到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,⽽不需要做任何修改。
FatFs 模块为应⽤程序提供了下列函数
1.f_mount
在 FatFs 模块上注册 / 注销⼀个⼯作区 ( ⽂件系统对象 )
FRESULT f_mount (
BYTE  Drive,            /*  逻辑驱动器号  */
FATFS*  FileSystemObject /*  ⼯作区指针  */
);
参数
Drive
注册 / 注销⼯作区的逻辑驱动器号 (0-9) 。
FileSystemObject
⼯作区 ( ⽂件系统对象 ) 指针。
返回值
铁岭大葱FR_OK (0)
函数成功。
FR_INVALID_DRIVE
驱动器号⽆效
f_mount 函数在 FatFs 模块上注册 / 注销⼀个⼯作区。在使⽤任何其他⽂件函数之前,必须使⽤该函
数为每个卷注册⼀个⼯作区。要注销⼀个⼯作区,只要指定 FileSystemObject 为 NULL 即可,然后该⼯作区可以被丢弃。
该函数只初始化给定的⼯作区,以及将该⼯作区的地址注册到内部表中,不访问磁盘 I/O 层。卷装⼊过程是在f_mount 函数后或存储介质改变后的第⼀次⽂件访问时完成的。
2.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  是⽆效的。
返回值
FR_OK (0)
函数成功,该⽂件对象有效。
FR_NO_FILE
不到该⽂件。
FR_NO_PATH
不到该路径。
FR_INVALID_NAME
⽂件名⽆效。
FR_INVALID_DRIVE
驱动器号⽆效。
FR_EXIST
该⽂件已存在。
FR_DENIED
由于下列原因,所需的访问被拒绝:
n  ▲ 以写模式打开⼀个只读⽂件。
n  ▲ 由于存在⼀个同名的只读⽂件或⽬录,⽽导致⽂件⽆法被创建。
n  ▲ 由于⽬录表或磁盘已满,⽽导致⽂件⽆法被创建。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,⽽导致磁盘驱动器⽆法⼯作。
FR_WRITE_PROTECTED
在存储介质被写保护的情况下,以写模式打开或创建⽂件对象。
FR_DISK_ERR
由于底层磁盘 I/O 接⼝函数中的⼀个错误,⽽导致该函数失败。
FR_INT_ERR
由于⼀个错误的 FAT 结构或⼀个内部错误,⽽导致该函数失败。
FR_NOT_ENABLED
逻辑驱动器没有⼯作区。
FR_NO_FILESYSTEM
磁盘上没有有效地 FAT 卷。
如果函数成功,则创建⼀个⽂件对象。该⽂件对象被后续的读 / 写函数⽤来访问⽂件。如果想要关闭⼀个打开的⽂件对象,则使
⽤ f_close 函数。如果不关闭修改后的⽂件,那么⽂件可能会崩溃。在使⽤任何⽂件函数之前,必须使⽤ f_mount 函数为驱动器注册⼀个⼯作区。只有这样,其他⽂件函数才能正常⼯作。
节电技术3.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
⽂件对象⽆效。ppic9k
f_close 函数关闭⼀个打开的⽂件对象。⽆论向⽂件写⼊任何数据,⽂件的缓存信息都将被写回到磁盘。该函数成功后,⽂件对象不再有效,并且可以被丢弃。如果⽂件对象是在只读模式下打开的,不需要使⽤该函数,也能被丢弃。
4.f_read
从⼀个⽂件读取数据
FRESULT f_read (
FIL* FileObject,        /*  ⽂件对象结构的指针  */
嵌入式技术应用void* Buffer,            /*  存储读取数据的缓冲区的指针  */
UINT ByteToRead,        /*  要读取的字节数  */
UINT* ByteRead          /*  返回已读取字节数变量的指针  */
);
参数
FileObject
指向将被读取的已打开的⽂件对象结构的指针。
Buffer
指向存储读取数据的缓冲区的指针。
ByteToRead
要读取的字节数, UINT 范围内。
ByteRead
指向返回已读取字节数的 UINT 变量的指针。在调⽤该函数后,⽆论结果如何,数值都是有效的。
返回值
FR_OK (0)
函数成功。
FR_DENIED
由于⽂件是以⾮读模式打开的,⽽导致该函数被拒绝。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,⽽导致该函数失败。
FR_INT_ERR
由于⼀个错误的 FAT 结构或⼀个内部错误,⽽导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,⽽导致磁盘驱动器⽆法⼯作。
FR_INVALID_OBJECT  ⽂件对象⽆效。
⽂件对象中的读 / 写指针以已读取字节数增加。该函数成功后,应该检查  *ByteRead  来检测⽂件是否结束。在读操作过程中,⼀旦  *ByteRead < ByteToRead  ,则读 / 写指针到达了⽂件结束位置。
5.f_write
写⼊数据到⼀个⽂件
FRESULT f_write (
FIL* FileObject,        /*  ⽂件对象结构的指针  */
随行夹具const void* Buffer,      /*  存储写⼊数据的缓冲区的指针  */
UINT ByteToWrite,        /*  要写⼊的字节数  */
UINT* ByteWritten        /*  返回已写⼊字节数变量的指针  */
);
参数
FileObject
指向将被写⼊的已打开的⽂件对象结构的指针。
Buffer
指向存储写⼊数据的缓冲区的指针。
ByteToRead
要写⼊的字节数, UINT 范围内。
ByteRead
指向返回已写⼊字节数的 UINT 变量的指针。在调⽤该函数后,⽆论结果如何,数值都是有效的。
返回值
FR_OK (0)
函数成功。
FR_DENIED
由于⽂件是以⾮写模式打开的,⽽导致该函数被拒绝。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,⽽导致该函数失败。
FR_INT_ERR
由于⼀个错误的 FAT 结构或⼀个内部错误,⽽导致该函数失败。
FR_NOT_READY

本文发布于:2024-09-23 05:18:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/212343.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   指针   对象   导致   打开   作区   失败   结束
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议