打印
[MM32软件]

FATFS文件系统接口函数使用

[复制链接]
1141|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51xlf|  楼主 | 2023-1-29 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FatFS文件系统包含了文件
ff.h :文件系统实现头文件,定义有文件系统所需的数据结构
diskio.h :底层驱动头文件,就一些状态宏的定义和底层驱动函数的申明
integer.h:仅实现数据类型重定义,增加系统的可移植性
ffconf.h :文件系统配置
ff.c :文件系统实现。
diskio.c 底层驱动

FatFs 提供下面的函数API:
f_mount - 注册/注销一个工作区域(Work Area)
f_open - 打开/创建一个文件f_close - 关闭一个文件
f_read - 读文件f_write - 写文件
f_lseek - 移动文件读/写指针
f_truncate - 截断文件
f_sync - 冲洗缓冲数据 Flush Cached Data
f_opendir - 打开一个目录
f_readdir - 读取目录条目
f_getfree - 获取空闲簇 Get Free Clusters
f_stat - 获取文件状态
f_mkdir - 创建一个目录
f_unlink - 删除一个文件或目录
f_chmod - 改变属性(Attribute)
f_utime - 改变时间戳(Timestamp)
f_rename - 重命名/移动一个文件或文件夹
f_mkfs - 在驱动器上创建一个文件系统
f_forward - 直接转移文件数据到一个数据流 Forward file data to the stream directly
f_gets - 读一个字符串
f_putc - 写一个字符
f_puts - 写一个字符串
f_printf - 写一个格式化的字符磁盘I/O接口
f_tell - 获取当前读/写指针
f_eof - 测试一个文件是否到达文件末尾
f_size - 获取一个文件大小
f_error - 测试一个文件是否出错

因为FatFs模块完全与磁盘I/O层分开,因此需要下面的函数来实现底层物理磁盘的读写与获取当前时间。底层磁盘I/O模块并不是FatFs的一部分,并且必须由用户提供。

disk_initialize - Initialize disk drive 初始化磁盘驱动器
disk_status - Get disk status 获取磁盘状态
disk_read - Read sector(s) 读扇区
disk_write - Write sector(s) 写扇区
disk_ioctl - Control device dependent features 设备相关的控制特性
get_fattime - Get current time 获取当前时间

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卷。


使用特权

评论回复
沙发
单片小菜| | 2023-1-29 16:55 | 只看该作者
这个和官网的文档是一样的,也是最好用的。

使用特权

评论回复
板凳
tpgf| | 2023-2-5 11:45 | 只看该作者
FATfs和ntfs文件系统的具体的区别是什么呢

使用特权

评论回复
地板
paotangsan| | 2023-2-6 09:05 | 只看该作者
FATFS是一个完全免费开源的FAT 文件系统模块,专门为小型的嵌入式系统而设计

使用特权

评论回复
5
renzheshengui| | 2023-2-6 09:28 | 只看该作者
FATFS完全用标准C 语言编写,所以具有良好的硬件平**立性。

使用特权

评论回复
6
wakayi| | 2023-2-6 10:21 | 只看该作者
ATFS文件系统与平台无关,移植简单。全C语言编写。

使用特权

评论回复
7
wowu| | 2023-2-6 10:29 | 只看该作者
FATFS文件系统的代码量少、效率很高。

使用特权

评论回复
8
xiaoqizi| | 2023-2-6 10:53 | 只看该作者
FATFS模块层次结构
①、底层接口,包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟,需要我们根据平台和存储介质编写移植代码。
②、中间层FATFS模块,实现了FAT 文件读/写协议。FATFS模块提供的是ff.c和ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。
③、最顶层是应用层,使用者无需理会FATFS的内部结构和复杂的FAT 协议,只需要调用FATFS模块提供给用户的一系列应用接口函数,如f_open,f_read,f_write 和f_close等,就可以像在PC 上读/写文件那样简单。

使用特权

评论回复
9
软核硬核| | 2023-2-8 11:34 | 只看该作者
FatFS文件系统在单片机里真的是非常常用!

使用特权

评论回复
10
LLGTR| | 2023-2-8 11:35 | 只看该作者
最先学习的就是这个文件系统了。

使用特权

评论回复
11
天天向善| | 2023-2-8 11:35 | 只看该作者
RTOS配上文件系统,还是非常不错的。

使用特权

评论回复
12
Jacquetry| | 2023-3-12 22:28 | 只看该作者
只调用FATFS模块提供的应用接口函数就可以

使用特权

评论回复
13
OKAKAKO| | 2023-3-13 10:34 | 只看该作者
完全是由 ANSIC 语言编写并且完全独立于底层的 I/O 介质

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

535

主题

9633

帖子

23

粉丝