没有合适的资源?快使用搜索试试~ 我知道了~
首页FATFS文件系统应用程序手册(中文版).pdf
FATFS文件系统应用程序手册(中文版).pdf
需积分: 50 56 下载量 63 浏览量
更新于2023-03-16
3
收藏 57KB PDF 举报
FATFS文件系统应用手册,是中文的,详细介绍了FATFS文件系统中的应用程序接口的适应方法,对于开发文件系统有很大的帮助
资源详情
资源推荐
FATFS
------- 基于 R0.009A 版本
函数名 描述
f_mount 注册/ 注销一个工作区
f_open 打开/ 创建一个文件
f_close 关闭一个文件
f_read 读取文件
f_write 写文件
f_lseek 移动读 / 写指针,扩展文件大小
f_truncate 截断文件大小
f_sync 清空缓冲数据
f_opendir 打开一个目录
f_readdir 读取一个目录项
f_getfree 获取空闲簇
f_stat 获取文件状 态
f_mkdir 创建一个目录
f_unlink 删除一个文件 或目录
f_chmod 修改属性
f_utime 修改 日间戳
f_rename 删除 / 移动一个文件 或目录
f_chdir 修改当 前目录
f_chdrive 修改当 前驱动器
f_getcwd 恢复当 前目录
f_forward 直接输出 文件数据流
f_mkfs 在驱动器上创建一个文件 系统
f_fdisk 划分 一个物理驱动器
f_gets 读取一个 字符串
f_putc 写一个 字符
f_puts 写一个 字符串
f_printf 写一个 格式化的字符串
f_tell 获取 当前读/ 写指针
f_eof 测试 一个文件是 否到达 文件末尾
f_size 获取一个文件 的大小
f_error 测试 一个文件是 否出错
文件系统应用程序技术手册(中文版)
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 由于下列原因 ,所需 的访问被 拒绝 :
? 以写模式打开一个 只读文件。
? 由于存在一个 同名的只 读文件 或目录,而 导致文件 无法被创建。
? 由于目录 表或磁盘 已满 ,而 导致文件 无法被创建。
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 函数为驱 动器 注册一个工作
区。 只有这样,其他文件 函数才能正常 工作。
示例 ( 文件拷贝 )
void main (void)
{
FATFS fs[2]; /* 逻辑驱 动器的工作区 ( 文件系统对象 ) */
FIL fsrc, fdst; /* 文件 对象 */
BYTE buffer[4096]; /* 文件 拷贝 缓冲区 */
FRESULT res; /* FatFs 函数公共结果代码 */
UINT br, bw; /* 文件读 / 写字节计数 */
/* 为逻辑驱 动器注册工作区 */
f_mount(0, &fs[0]);
f_mount(1, &fs[1]);
/* 打开 驱动器 1 上的 源文件 */
res = f_open(&fsrc, "1:srcfile.dat", FA_OPEN_EXISTING | FA_READ);
if (res) die(res);
/* 在驱动器 0 上创建目 标文件 */
res = f_open(&fdst, "0:dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE);
if (res) die(res);
/* 拷贝源 文件到目标文件 */
for (;;) {
res = f_read(&fsrc, buffe r, sizeof(buffer), &br);
if (res || br == 0) break; /* 文件 结束错误 */
res = f_write(&fdst, buffer, br, &bw);
if (res || bw < br) break; /* 磁盘 满错误 */
}
/* 关闭打开 的文件 */
f_close(&fsrc);
f_close(&fdst);
/* 注销工作区 ( 在废弃前) */
f_mount(0, NULL);
f_mount(1, NULL);
}
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 文件 对象无效 。
描述
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 变量 的指针。在 调用该函 数后,无论
结果 如何,数值都是有效的 。
剩余29页未读,继续阅读
xutopia77
- 粉丝: 18
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功