| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32——FATFS文件系统 -> 正文阅读 |
|
[嵌入式]STM32——FATFS文件系统 |
?可裁剪意味着可以选择部分功能,减小占用的空间。 与Windows兼容意味着可以在电脑上直接读取文件。?
①
底层接口,
包括存储媒介读/写接口(
disk I/O
)和供给文件创建修改时间的实时时钟
,
需要我们
根据平台和存储介质
编写移植代码
。
②
中间层
FATFS
模块,
实现了
FAT
文件读/写协议。
FATFS
模块提供的是
ff.c
和
ff.h
。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。
③
最顶层是应用层,
使用者无需理会
FATFS
的内部结构和复杂的
FAT
协议,只需要调用
FATFS
模块提供给用户的一系列应用接口函数,如
f_open
,
f_read
,
f_write
和
f_close
等,就可以像在
PC
上读/写文件那样简单。
?diskio.c文件非常重要,我们需要根据存储介质来修改,是与硬件打交道的。 经验: 大部分的可移植的小系统或者应用,都是采用类似这种将与底层打交道的源码开发给用户编写,然后提供顶层配置文件供配置。不需要自己编写文件管理系统。
①
_FS_TINY
。
这个选项在
R0.07
版本中开始出现,之前的版本都是以独立的
C
文件出现(
FATFS
和
Tiny FATFS
),有了这个选项之后,两者整合在一起了,使用起来更方便。我们使用
FATFS
,所以把这个选项定义为
0
即可。
②
_FS_READONLY
。
这个用来配置是不是只读,本章我们需要读写都用,所以这里设置为
0
即可。
③
_USE_STRFUNC
。这个用来设置是否支持字符串类操作,比如
f_putc
,
f_puts
等,本章我们需要用到,故设置这里为
1
。
④ _USE_MKFS。这个用来定时是否使能格式化,本章需要用到,所以设???? 置这里为1。 ⑤ _USE_FASTSEEK。这个用来使能快速定位,我们设置为1,使能快速定位。 ⑥ _USE_LABEL。这个用来设置是否支持磁盘盘符(磁盘名字)读取与设置。我们设置为1,使能,就可以通过相关函数来读取和设置磁盘的名字了。 ⑦_CODE_PAGE。这个用于设置语言类型,包括很多选项(见FATFS官网说明),我们这里设置为936,即简体中文(GBK码,需要c936.c文件支持,该文件在option文件夹)。 ⑧_USE_LFN。该选项用于设置是否支持长文件名(还需要_CODE_PAGE支持),取值范围为0~3。0,表示不支持长文件名,1~3是支持长文件名,但是存储地方不一样,我们选择使用3,通过ff_memalloc函数来动态分配长文件名的存储区域。 ⑨_VOLUMES。用于设置FATFS支持的逻辑设备数目,我们设置为3的话,即支持3个设备(磁盘)。 ⑩_MAX_SS。扇区缓冲的最大值,一般设置为512。 diskio.c和diskio.h是硬件层。 ff.c和ff.h是FatFs的文件系统层和文件系统的API层
①数据类型:在integer.h 里面去定义好数据的类型。这里需要了解你用的编译器的数据类型,并根据编译器定义好数据类型。
②配置:通过ffconf.h配置FATFS的相关功能,以满足你的需要。
③函数编写:打开diskio.c,进行底层驱动编写,一般需要编写6个接口函数
? ?下面以接口函数disk_read 为例子
f_mount -注册/注销一个工作区域(Work Area) 正点原子自己写了一个exfuns.c的文件用来实现部分文件操作,如下图的f_typetell所示。同时写了fattester文件来封装FSTFS文件管理系统的开放函数,fattester.h文件如下。
mf_showfree 函数用来显示剩余SD卡的容量
?exfuns.c中的exf_getfree提供了类似的功能
? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 16:43:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |