STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能

news2024/9/29 0:11:54

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格式了。

在这里插入图片描述

发送错误的系统格式如下:

在这里插入图片描述

注意:这里是为了记录演示操作的,如果卡没有出问题尽量不要去格式化的,正常使用就行。


总结

以上就是常见的相关文件操作函数的大致传参操作过程了。

总体还是比较简单的,主要是能搞懂代码的参数传递过程就基本没什么大问题啦。

一般常用的就是挂载文件、扫描文件、打开文件、写数据、指针位置的设置、读数据、关闭文件等。

其它部分不常用的函数就不一一列举出来了,按照一样的方法来操作即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试学习路线图

软件测试工程师是专门从事软件、系统或产品测试和评估的技术专业人士,确保它们符合既定标准并无任何缺陷。通过精心设计和执行测试计划,软件测试工程师发现 Bug、故障和需要改进的领域,从而提高最终产品的可靠性和性能。 软件测试工程师在软…

干货|CNAS-CL01设备部分解读,透彻掌握软件测试实验室设备关键点

CNAS-CL01《检测和校准实验室能力认可准则》是软件测试实验室建立符合CNAS标准的质量管理体系必须要贯彻的一部准则,分为五大核心部分:通用要求、结构要求、资源要求、过程要求和管理体系要求。前面的文章中我们为大家分享了通用要求部分、结构要求部分以…

WebAssembly进阶,vue3 使用 WebAssembly,及 WebAssembly vs JavaScript 的性能对比

目录 核心使用步骤 .c文件.cpp文件编译 使用 Emscripten 转译文件 页面中引入.wasm文件中的函数 WebAssembly vs JavaScript 的性能对比 性能对比关键点: 具体场景 实际案例分析 如果对WebAssembly不熟悉可以前往:WebAssembly最详教程,进行WebAssembly基础学习 Web…

一篇文章弄懂数据结构中的各种排序_插入排序_冒泡排序_快速排序_堆排序_归并排序_基数排序

文章目录 一篇文章弄懂数据结构中的各种排序1.排序的概念2. 插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔排序 3.冒泡排序3.1 算法原理3.2 性能分析 4.快速排序4.1 算法原理4.2 性能分析 5. 选择排序5.1 简单选择排序5.2 堆排序5.1 算法流程5.2 算法效率分析5.3 堆排序的…

2024CSCO 芦康沙妥珠单抗创造晚期TNBC二线治疗新高度

前言 “魔法子弹”的概念从上世纪初提出,经过一百多年的不断探索,抗体药物偶联物(ADC)从理想照进现实,达到今天百舸争流的盛况,被认为是极具前景的创新疗法,全球范围内已有十余款产品被批准用于…

使用Mendeley生成APA格式参考文献

Mendeley 是一款文献管理工具,可以在Word中方便的插入引用文献。 效果对比: 注:小绿鲸有三种导出格式,分别为复制、导出为Bibtex和导出为Endnote三种。 Mendeley 下载与安装 Download Mendeley Reference Manager For Desktop m…

报道|解读INFORMS期刊影响因子的下降及运筹与管理科学出版的未来

编者按 David Simchi-Levi和Tinglong Dai老师近期在ORMS Today上发表了一篇名为拥抱影响力的变化:解读INFORMS期刊影响因子的下降及运筹与管理科学出版的未来的文章,探讨了近几年INFORMS的大多数期刊影响因子下降的原因以及带给我们的启示。 2023年7月&a…

Qt 首次配置 Qt Creator 14.01 for Python

前言: 如何用QT实现Python的配置的交互界面。本文从0开始,进行实践的介绍。 在上一节里面,我们做了社区版本的配置: https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

Linux —— udp实现群聊代码

一、介绍 前面我们一步步模拟实现了一个简单的udp服务器和客户端,通过这个服务器,我们简单实现一个群聊的功能,本篇是专门用来记录代码的,详细的实现思路可以去参考我其他两篇,Socket编程(一)和…

Android性能优化相关的10个经典面试题

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 以下是一些Android性能优化面试问题,包括问题和参考解答: 1. 如何优化Android应用的启动速度? 答案&#…

零基础教你如何开发webman应用插件

0X07 发布插件应用 插件应用发布地址 https://www.workerman.net/app/create。填写好发布相关信息 0X08 上传源码zip文件 提交完成之后等待官方审核就可以啦! 0X09 安装插件 应用插件安装有两种方式 在插件市场安装 进入官方管理后台webman-admin 的应用插件页点击…

tauri开发配置文件和文件夹访问路径问题

文件夹没权限:Unhandled Promise Rejection: path not allowed on the configured scope: /Users/song/Library/Application Support/com.pakeplus.app/assets/default.png 没有文件夹,需要先创建:Unhandled Promise Rejection: path: /Users…

GB28181信令交互流程及Android端设备对接探讨

GB28181规范必要性 好多开发者在做比如执法记录仪、智能安全帽、智能监控等设备端视频回传技术方案选型的时候,不清楚到底是用RTSP、RTMP还是GB28181,对GB28181相对比较陌生,我们就GB28181规范的必要性,做个探讨: 实现…

vue+UEditor附件上传问题

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

【软件测试】详解软件测试中的测试级别

目录 一、测试级别二、组件测试三、开发者测试3.1测试与调试3.2 组件测试目标3.3 测试功能 四、稳健性测试4.1 效率的测试4.2 测试可维护性4.3 测试策略4.4 白盒测试 一、测试级别 软件系统通常是由许多子系统组成的,而这些子系统又是由多个组件组成的,…

基于STM32的无人驾驶车辆系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 传感器数据采集与处理路径规划与避障控制实时反馈与控制系统应用场景结论 1. 引言 随着无人驾驶技术的发展,嵌入式系统在无人驾驶车辆中的应用变得越来越重要。STM32作为高效…

ECMAScript 与 JavaScript 的区别详解

ECMAScript 与 JavaScript 的区别详解 在前端开发的学习过程中,很多开发者会遇到两个常见的术语:ECMAScript 和 JavaScript。这两个术语常常被混淆,因为它们密切相关,甚至有时被认为是同一件事。本文将详细解析 ECMAScript 和 Ja…

盘点4款专业高效的数据恢复工具。

超级兔子数据恢复工具具有广泛的系统适配性,功能丰富,操作简单,是一款比较专业的数据恢复软件。如果大家在为数据丢失而烦恼的话,我可以推荐几款好用的数据恢复软件给大家。 1、福昕数据高效恢复 直通车:http://www.p…

有哪些使用的电脑安全小技巧?

以下是一些电脑使用的安全技巧: 1. 定期更新系统和软件: 操作步骤:打开系统设置中的“更新和安全”选项,启用自动更新。对于软件,在其设置中查找更新选项并定期检查。 2. 设置强密码: 操作步骤&#xf…

yakit使用教程(二,配置证书并进行抓包改包操作)

前文链接:yakit下载安装教程。 一,下载并配置证书。 点击mitm,在跳转后的页面点击高级配置。 点击证书下载。 点击下载到本地并打开(建议下载到桌面)。 在火狐浏览器下载并安装FoxyProxy,具体参数配置如上…