STM32CubeMX快速构造工程模板(四)

本文介绍了如何使用STM32CubeMX快速构造工程模板,并搭载FatFS文件系统,通过配置IIC、修改工程文件和宏定义,实现文件系统的功能,包括文件读写、长文件名支持等,适用于嵌入式硬件开发。
摘要由CSDN通过智能技术生成

STM32CubeMX作为一个免费开源的软件,能够可视化配置STM32或其他产品硬件资源,能过快速地构造工程模板,很是方便!!!

本篇:STM32CubeMX快速构造工程模板(四),搭载文件系统FatFS。

下一篇:

STM32CubeMX工程模板应用

STM32F103为例。

FatFS是一个适用于嵌入式设备的文件系统,提供对FAT12、FAT16和FAT32格式的支持,还支持一些额外的功能,如长文件名、紧缩数据存储和NAND闪存和SD卡等非易失性存储设备的处理。

作为开源代码,FatFS的代码库可在MIT许可证下免费使用和分发。FatFS适用于各种嵌入式应用场合,如传感器数据记录、音频和视频处理等。

附上FatFS的官网,里面有详细的一些功能描述,有兴趣的可以去了解一下。

FatFs文件系统官网

实验-搭载FatFS文件系统

第一步打开STM32CubeMX配置IIC。

然后在STM32CubeMX的Project Manager中将Minimum Heap Size的容量增加(因为上图第三步),我增加到0x1000。然后生成工程。

部分宏解析

在使用FatFS时,可以根据自己的需求和系统资源(特别是内存容量)的限制来设置各种宏参数,更好地平衡文件系统的性能和内存占用。

一般宏开关存放在ffconf.h中。

FS_MINIMIZE:控制FatFS的内存占用的宏定义之一。可取值0、1、2。

0:不进行内存优化,FatFS 会尽可能地使用更多的内存来提高文件系统的性能。
1:进行轻微内存优化。此时,FatFS 会缩短文件名的长度以降低内存占用,并且在目录搜索时不再进行缓存,以避免过多的内存占用。
2:进行极致内存优化。此时,FatFS 会采取极端方式压缩内存占用,减少内存缓存等操作,以最小化内存占用并提高性能。

Enabled with x functions removed 是一个用于开启/关闭 FatFS 内置函数的参数。该参数控制是否开启x个被称为"功能削减(Function Reduction)"的函数,这些函数在一些内存资源有限的嵌入式系统中可能会导致一些问题,如不必要的代码浪费、内存溢出等。

当x=8、11、12时,被削减的函数分别是:
f_stat    :获取文件或目录的属性信息。
f_getfree :获取可用的簇数和扇区数。
f_unlink  :删除文件或目录。
f_mkdir   :创建一个新目录。
f_chmod   :设置文件或目录的访问权限。
f_utime   :设置文件或目录的访问和修改时间。
f_truncate:将文件截断为指定的长度。
f_rename  :重命名文件或目录。

f_opendir :打开目录。(第11个函数)
f_readdir :读取目录。(第11个函数)
f_closedir:关闭目录。(第11个函数)

f_lseek   :将文件指针移动到指定的位置。(第12个函数)

USE_STRFUNC:控制是否启用字符串转换功能。

Enabled without LF->CRLF conversion:启用字串转换功能,但不对单独的 LF 换行符进行处理,保留原始的 LF 符号,也不会在读取文本数据时自动将 CRLF 转换为 LF。
Enabled with LF->CRLF conversion:启用字串转换功能,并将 LF 换行符转换为 CRLF 形式将 CRLF 转换为 LF 形式,以便在不同平台之间实现文件数据的兼容。

USE_FIND:控制是否启用查找文件的功能。

启用 USE_FIND 后,可以使用 f_findfirst、f_findnext 函数来查找指定目录下符合条件的文件。这两个函数都使用 FILINFO 结构体作为输出参数,用于返回每个找到的文件的属性和信息。FILINFO 结构体包含了文件名、文件大小、创建时间、修改时间等文件属性,以及文件所属的目录路径等信息。

USE_MKFS:控制是否启用文件系统格式化的功能。

在使用 f_mkfs() 函数格式化磁盘时,需要指定 FAT 文件系统的类型、扇区大小以及簇大小,而这些参数的设置可能影响文件系统的性能、磁盘占用率、兼容性等方面。

在使用 f_mkfs() 函数之前,通常需要先使用 f_mount() 函数挂载文件系统或使用 f_fdisk() 函数分区,然后才能成功地格式化磁盘。

USE_FASTSEEK:控制是否启用快速搜索(`Fast seek`)的功能。

启用该功能后,文件系统可以快速定位到指定的文件偏移量处,而不需要从文件头部遍历到该偏移量,从而提高文件读写的效率。

一些特殊文件系统和存储介质可能不支持快速搜索功能,快速搜索功能对于需要经常读写大文件或频繁进行随机读写的应用场景,可以提供较大的性能提升。

USE_LABEL:控制是否启用磁盘标签功能。

启用该功能后,文件系统可以对磁盘进行命名或添加标签信息,以区分不同的存储设备或分区。

启用磁盘标签功能后,可以使用以下API接口来读取或设置磁盘的标签信息:

f_getlabel():获取磁盘的标签信息。
f_setlabel():为磁盘设置新的标签信息。

可以将磁盘标签设置为设备名称、存储介质的制造商名称、设备生产批号等信息,从而提高系统可维护性、可读性和易用性。

如果磁盘标签信息被修改,可能需要进行额外的校验和验证,以确保存储设备的完整性和安全性。

US

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值