STM32CubeMX基于SD卡的FATFS文件系统测试(附源码)

来源:互联网 发布:java web直播源码 编辑:程序博客网 时间:2024/05/16 04:57

1.问题描述:使用STM32CubeMX配置SD基于SD卡的FATFS文件系统,并进行测试文件的读写。

2.测试准备:

(1)测试环境
软件平台:STM32CubeMX -4.22.0;KEIL5
硬件平台:原子战舰V3
测试代码参考硬石例程,下方有附资料链接。此外这是我收藏的帖子地址http://bbs.elecfans.com/forum.php?mod=viewthread&tid=913752&extra=


(2)测试环境搭建
硬件图就不发了,基本都是一样的。
I.Stm32CubeMX配置:下面是主要配置,其中SD等部分配置可参考前一文章或者自行下载源码查看。

首先是选择开启FATFS,勾选SD Card。

这里写图片描述

接着是Configuration界面。

这里写图片描述

配置中间层FATFS选项。

这里写图片描述

然后下图我开启的是动态的时间戳,硬石的教程里用的是静态的,实际测试两者均能够通过。至此FATS设置基本上完毕,其他默认就好。由此可以体会到这软件是多强大。

这里写图片描述

由于开启长文件名,且是将缓存放在STACK中的,所以对应在设置工程选项时,堆部分空间也要设置大一点。在cube软件里按ALT+P即可调出设置界面。主要更改下图Minimum Stack Size的值即可。

这里写图片描述


II.测试代码:
有教程的好处就是拿别人敲好的直接复制过来就可,然后根据具体情况调试更改。嘿嘿

下面先是变量申请:

这里写图片描述

然后就是测试代码咯:
画横线的部分是对源码做出的主要改动,硬石源码是通过cube生成工程后自己再添加了很多自己的部分。这里本人直接使用软件生成初始化函数,用自带声明的参数去进行判断。不然每一次重新生成工程都要手动屏蔽一大堆代码想想都烦。

这里写图片描述

但做到这儿,满以为搞定完成,但实际测试时系统卡在下图这个地方。

这里写图片描述

经DEBUG后发现是系统滴答定时器中断没有进去,仔细检查代码后发现是自己智障勒。。。实际使用时,是可以通过的。但我本身基本不使用系统自带的延时函数,所以直接对这个函数用自己的延时函数重构了。毕竟系统提供的这个延时函数并不是很好。如果有要使用系统自带的延时,可以把测试代码main中的delay_init()屏蔽即可。
这里写图片描述

3.测试结果:

这里写图片描述

把SD拔下,用读卡器接入电脑。

这里写图片描述
测试完成。[]~( ̄▽ ̄)~*

4.参考资料及测试源码:

首先贴出硬石YS-F1Pro开发板HAL库例程参考源码地址下载:
链接 : https://pan.baidu.com/s/1nvtZhVV 密码 : 416v
然后是测试代码:
链接:http://pan.baidu.com/s/1dELZU2t 密码:icei

原创粉丝点击