服装网站的建设策划,导入 wordpress,软件开发培训哪里好,hph网站模板STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能 文章目录 STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能前言部分主要相关代码# USMART介绍1. mf_scan_files 扫描磁盘文件2. mf_mount 挂载磁盘3. mf_open 打开文件4. mf_read 读数据内容5. mf…STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能 文章目录 STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能前言部分主要相关代码# USMART介绍1. mf_scan_files 扫描磁盘文件2. mf_mount 挂载磁盘3. mf_open 打开文件4. mf_read 读数据内容5. mf_write 写数据内容6. mf_lseek 设置文件读写指针位置7. mf_tell 获取文件读写指针位置8. mf_close 关闭文件9. mf_size 获取文件大小10. mf_showfree 获取磁盘容量11. mf_unlink 删除文件12. mf_rename 修改文件名字13. mf_getlabel 获取磁盘名字14. mf_setlabel 设置磁盘名字15. mf_fmkfs 格式化磁盘总结 前言
学习移植了FATFS的代码在使用过程中发现一个很方便的操作就是通过电脑串口调试助手来测试文件的相关操作功能可以不用频繁的在MDK上编写代码、下载代码而直接在串口助手操作就可以简单验证相关接口功能实现。
就是正点原子官方提供的“USMART串口调试组件”代码工具。
部分主要相关代码
在串口助手操作使用之前要先在代码添加需要用到的函数然后编译下载到开发板上打开串口就可以了。位置和格式如下图 这些函数定义在fattester.c里面具体函数的参数及解析到该文件里查看即可。其实这些函数官方是为了测试方便而在文件系统的函数基础上再次进行封装的这样使用USMART调用起来就相对比较方便了。
FATFS的FRESULT返回值如下定义了一个枚举体来存放这些返回值。 后面调用函数或者操作时获取到的返回值对比看这里的具体值就可以知道具体什么情况了。 # USMART介绍 USMART 是由 ALIENTEK 开发的一个灵巧的串口调试互交组件通过它你可以通过串口助手调用程序里面的任何函数并执行。因此可以随意更改函数的输入参数 支持数字 10/16进制 支持负数)、字符串、函数入口地址等作为参数单个函数最多支持 10 个输入参数并支持函数返回值显示。
这个调试组件的具体使用可以学习下官方的教程就行视频或者开发指南文档都是可以的熟悉之后就方便功能使用了。
一般在使用USMART之前通过串口发送help指令后就可以提示以下帮助内容提示 发送list指令后会列出注册好可调用的函数如下图所示 那么就根据个人需求调用函数传入相关参数就行。
注意发送时需要添加回车换行处理即在串口助手上勾选下方的”发送新行“按钮即可。
下面就简单记录一下常用函数的使用方法(默认使用的是SD卡下文所指的磁盘即为SD卡)
1. mf_scan_files 扫描磁盘文件
扫描SD卡的文件会列出所有文件名 标号1处代表是SD卡磁盘的意思标号2是函数返回值0表示成功详细参考FRESULT值即可。
2. mf_mount 挂载磁盘
挂载磁盘为磁盘注册工作区默认用的是SD卡 返回0则说明磁盘挂载成功。
3. mf_open 打开文件
打开SD卡已存在的文件。 标号2处是模式值详细可以去代码里面看具体数值的。这里模式支持读、写和如果打开的文件名不存在则新建一个该名字的文件。 4. mf_read 读数据内容
读取打开的文件中的指定字节长度数据 函数参数传入的是要读取数据的长度。
如果文件里面没有数据的话则是不会显示内容的。
例如打开一个不存在的文件过程如下图 mf_open(“0:/ddd.txt”,0x13) 打开一个不存在的文件后再次扫描文件就可以看到多了一个文件。调用读取函数指令后发现是不会显示内容的。 那么就可以调用写数据函数待写入完成然后再读就可以了。
5. mf_write 写数据内容
往文件里面写入指定长度的数据 发送读取数据函数后如下 问题来了前面已经写入6个字符成功了为什么现在读取不出来呢好像文件里面完全没有内容似的。
哦原来是操作步骤出了问题导致读取不出来数据的。
经过分析发现写入数据的指针此时还是在数据尾部那么要先将指针移动到头部才行。那么该如何实现呢
那么此时就可以发送mf_lseek函数实现将读写指针移动到数据开头就可以了。当然其它位置也可以根据自己的情况决定即可。 移动后接着再调用读函数。 此时奇迹出现了发现能正常读取到写入的数据了。读取的内容长度需要小于或等于写入的长度。
这个问题是一个很容易被忽略的就会导致读取失败的这个是很关键的一环。即写入完数据后先移动指针再读确保指针后面是有内容的。
6. mf_lseek 设置文件读写指针位置
文件读写指针偏移可以简单理解为光标 函数参数是相对首地址的偏移量简单理解就是指定指针所在的位置。 7. mf_tell 获取文件读写指针位置
读取文件当前读写指针的位置返回值是指针所在当前的位置。 8. mf_close 关闭文件
关闭已打开的文件通常搭配打开文件函数使用有打开就需要有关闭。 这个函数没有参数直接调用即可关闭该文件。
9. mf_size 获取文件大小
获取当前打开的文件大小 函数返回值是该文件里面的内容字节数(注意16进制转换)
10. mf_showfree 获取磁盘容量
显示磁盘总容量和剩余容量 11. mf_unlink 删除文件
删除磁盘指定名字的文件。 前面磁盘操作是有三个文件的 删除后就只有两个文件了如下图 删除后只剩2个文件了说明文件删除成功。
12. mf_rename 修改文件名字
重命名磁盘内的文件名字 设置成功后扫描一次文件 可以看到文件abc.txt被重命名为了stm32.txt
文件名字被修改后里面的内容是不变的依然可以正常读取。 注意该函数的参数是带盘符和文件名及扩展名的不能只写文件名否则会出错。
13. mf_getlabel 获取磁盘名字
查看磁盘的名字 由于前面是没有设置过磁盘名字所以读取出来的名字是空的。
14. mf_setlabel 设置磁盘名字
设置磁盘的名字 设置成功后再次读取就可以看到是设置后的名字了。 可以把卡取下来用读卡器接电脑可以看到磁盘也是这个名字。 注意 1、全角和半角输入法问题。 2、测试最大设置英文是11个字符(英文数字组合)。 中文最多是5个汉字。名字可以支持英文、数字和汉字组合长度限制在11内就可以。
15. mf_fmkfs 格式化磁盘
格式化磁盘清空内容
注意在格式化磁盘之前需要做好数据备份处理避免文件丢失找不回了
我磁盘只支持下面三种系统格式如果参数不是这些就会提示错误的结果会以返回值反馈。 和代码对比有2个格式是可以支持使用的如下 所以参数传入后面的数值即可。
注意发送格式化函数后需要耐心等待几秒钟进行格式化处理等看到有返回值后则说明操作完成。不要中途操作其它的了避免对磁盘产生伤害。
磁盘格式化为FAT32 磁盘格式化为exFAT 可以把卡取下来用读卡器接电脑可以看到磁盘最后被成功格式化为exFAT格式了。 发送错误的系统格式如下 注意这里是为了记录演示操作的如果卡没有出问题尽量不要去格式化的正常使用就行。 总结
以上就是常见的相关文件操作函数的大致传参操作过程了。
总体还是比较简单的主要是能搞懂代码的参数传递过程就基本没什么大问题啦。
一般常用的就是挂载文件、扫描文件、打开文件、写数据、指针位置的设置、读数据、关闭文件等。
其它部分不常用的函数就不一一列举出来了按照一样的方法来操作即可。