FreeRTOS 版本: FreeRTOSv10.2.1

HAL 版本:  Keil.STM32F4xx_DFP_HAL.2.13.0

版本无所谓,只是记录下。

文件目录 :FreeRTOSv10.2.1_191129\FreeRTOS-Labs\Source\FreeRTOS-Plus-FAT 整个拷贝到工程。

所需C文件:1.上图  ff_xx.c, (ff_locking.org 删除不需要)。 2.\portable\common\ff_ramdisk.c。

3.\portable\STM32F4xx\ff_sddisk.c 和 stm32f4xx_hal_sd.c(使用提供的 hal sd库文件,替换工程hal_sd文件,版本不同函数会不同,所以用提供的就行)。

添加头文件目录:\include 、\portable\common、\portable\STM32F4xx。(inlcude目录下)

文件添加完编译会提示:

所以跟TCP移植一样,官方提供FreeRTOSFATConfigDefaults.h默认配置,新建FreeRTOSFATConfig.h 添加自己的配置。

这些配置在官网介绍,都需要添加:

https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_FAT/Embedded_File_System_Configuration.html

详细配置见链接

(FreeRTOSFATConfig.h)     https://blog.csdn.net/wy212670/article/details/106859340

配置文件完编译:

会报错  ff_old_config_defines.h 文件 , 既然是old,不需要。去include目录删除,同时在ff_headers.h中删除头文件引用,

编译:(麻烦开始!!!)报很多错和警告。一个个修改。

双击定位到 ff_stdio.h

configNUM_THREAD_LOCAL_STORAGE_POINTERS   5  大于3就行。

编译:

把ff_dev_support.c文件屏蔽不编译。

编译:很多结构体未定义。

主要是头文件引用问题,ff_sddisk.c 和 stm32f4xx_hal_sd.c 最好都引用  #include "stm32f4xx_hal_sd.h",

然后在ff_headers.h 中引用 #include "stm32f4xx_hal.h",这样就没问题了。

编译:

就剩7个错误。

主要是SD模块函数开关没打开,在stm32f4xx_hal_sd.c 打开 HAL_SD_MODULE_ENABLED

在FreeRTOSFATConfig.h中 定义就行了,#define HAL_SD_MODULE_ENABLED。

编译:

又是一堆警告和错误,不过都很明显,主要是调用了 stm32f4xx_ll_sdmmc.c MMC库文件函数名和参数不同。

把stm32f4xx_hal_sd.c 中 SDIO_ConfigData 函数名 全部替换成 SDIO_ConfigData。

把 SDIO_GetResponse(SDIO_RESPx)函数多加一个参数 SDIO_GetResponse(hsd->Instance, SDIO_RESPx),全部替换。

编译:

就剩一个错了。

在ff_sddisk.c   回调函数用不到,实现一个空函数就行

编译没有错了!!!

就可以测试了,插上SD卡 , 打开串口。

在main.c调用 FF_SDDiskInit("/");

如果打印初始化失败,主要是SD卡 检测不到卡。

可以屏蔽代码,ff_sddisk.c 中 prvSDMMCInit(),

(不一定要屏蔽,自己检查代码和SD卡cd检查引脚,根据PCB,没用到CD线,就可以屏蔽)

需要注意的是初始化SD卡 FF_SDDiskInit()-> prvSDMMCInit( 0 )->vGPIO_SD_Init() 函数中

根据开发板SD卡 数据线是四线还是三线 初始化,我的是4线,打开 BUS_4BITS。

还有在配置文件中 ,文件名长度要尽量小,我设置200最后ff_open() molloc卡死,改成50。

#define ffconfigMAX_FILENAME                                        (49+1)

最后编译,

证明初始化成功,能读取卡信息,能挂载。能否读写还需要写代码测试。

读写测试:

ff_mkdir("/wy") 创建文件夹。

ff_fopen( pcFileName, "w" )打开文件流(ff_fopen()未创建文件会自动创建文件)。

ff_fwrite( pcRAMBuffer, fsRAM_BUFFER_SIZE, 1, pxFile )读取文件,具体参考官方介绍。

代码:https://blog.csdn.net/wy212670/article/details/106941394

创建文件夹成功,创建文件写入成功,读取文件成功。

stm32F407 + FreeRTOS + FAT 文件系统移植相关推荐

  1. K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)

    开发板:K210 AIRV R3版 widora 开发环境:kendryte IDE 官方的 必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图 (一) 新建文 ...

  2. 【易开嵌入式】rt-thread+stm32f407+nandflash,实现RL-FLASHFS文件系统移植

    版权声明:本版面文章皆为原创.或参考其他技术网站.博客后自己动手做实验所得,转载请注明出处. 鸣谢:感谢eric硬汉 商务合作:lz_kwok@foxmail.com 易开嵌入式工作室 基于单片机系统 ...

  3. 【STM32F407】第4章 ThreadX FileX文件系统移植到STM32F407(SD卡)

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=100749 第4章   ThreadX FileX文件系统移植到 ...

  4. STM32F407霸天虎FreeRTOS学习笔记——移植FreeRTOS到开发板上

    STM32F407霸天虎FreeRTOS学习笔记--移植FreeRTOS到开发板上 FreeRTOS源码获取 移植第一步:创建文件夹 Keil main.c 实验效果 FreeRTOS源码获取 在移植 ...

  5. linux模块移植到freertos,FATFS在嵌入式操作系统FreeRTOS中的移植与应用

    摘 要: FreeRTOS作为一款免费的实时操作系统,系统内核小.裁剪方便.移植性好,广泛应用于对成本敏感的小型嵌入式系统中,但是FreeRTOS本身不带文件管理功能,不便于很多需要经常进行文件存储与 ...

  6. 在SD/MMC卡中可读写的FAT文件系统

    2019独角兽企业重金招聘Python工程师标准>>> FAT文件系统 关于eLua中FAT文件系统的实现是使用了来自Elm Chan的一个很好的FatFS文件包.它可以在读写模式中 ...

  7. 2021-08-11 TM32F103 Buffer FatFs 文件系统移植

    FatFs 本文展示了STM32 FatFs文件系统移植 内容涉及 : FatFs 文件系统移植 SPI函数移植过程 SPI字节数据模拟输出独写 缓存读写 USART串口的识别 IO口输入输出 按键的 ...

  8. STM32+雷龙SD NAND(贴片SD卡)完成FATFS文件系统移植与测试

    一.前言 在STM32项目开发中,经常会用到存储芯片存储数据. 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复:在存储芯片里也会存放很多资源文件.比如,开机音乐,界面上的菜单 ...

  9. FatFs文件系统移植过程及中度分析

    FatFs 是一个通用的文件系统(FAT/exFAT)模块,用于在小型嵌入式系统中实现FAT文件系统. FatFs 组件的编写遵循ANSI C(C89),完全分离于磁盘 I/O 层,因此不依赖于硬件平 ...

  10. elm FatFs文件系统移植总结

    1 前言 本文将根据我的一些理解,针对elm FatFs文件系统做一个初步总结. 2 elm FatFs文件系统介绍 顾名思义FatFs文件系统就是针对FAT文件系统来的,主要是应用于MCU中,STM ...

最新文章

  1. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例
  2. 又一个放弃P10千万年薪出走阿里的CTO!
  3. C# Socket系列一 简单的创建socket的监听
  4. P4320-道路相遇,P5058-[ZJOI2004]嗅探器【圆方树,LCA】
  5. Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)
  6. OpenSolaris系统管理
  7. VTD(Virtual Test Drive)
  8. 我的世界怎么修改服务器文本,《我的世界手机版》如何修改界面文本 自定义语言教程...
  9. python制作u盘病毒_只需十行代码,人人都可以用python实现USB病毒
  10. windows10,忘记密码,不用u盘就可以修改密码
  11. html菜单栏向左展开与收起,网页左侧固定菜单栏的展开与收起
  12. 阿里云漏洞修复 RHSA-2019:0109-Important: perl secur
  13. SNN论文系列-ANN to SNN 学习算法
  14. 简单使用layui完成表格
  15. 十几套JavaWeb项目,拿去当毕业设计简直太爽了(源码)
  16. hcia是什么等级的证书_HCIA是什么等级的证书
  17. 基于Matlab的脉冲多普勒雷达仿真
  18. TA进阶实例34(Unreal制作水晶星光效果)
  19. 函数图像变换的规律,以一元函数和二元函数为例来说明,对多元函数同样适用。...
  20. 异常:Handling ClientRegistrationException error: No client with requested id: null

热门文章

  1. MTCNN人脸检测与人脸对齐
  2. 西门子PLC 和v90 伺服变频器G120通讯
  3. 嵌入式工程师需不需要学java_嵌入式开发工程师需要具备哪些素质和技能基础?...
  4. 史上最全C/C++思维导图,B站疯传,快收藏!!(附配套学习视频)
  5. 腾讯云短信封装(v3版本)
  6. GoldenDict 上的那些精美版权词典(附下载地址)(英语、俄语、梵语、印地语)
  7. macbook用户注意了,这个行为可能导致显示屏损坏
  8. 决策树模型及案例(Python)
  9. XRD分析软件安装及使用
  10. 中国计算机学会 信息学奥赛,信息学奥赛指南ll家长篇〈一〉