STM32的FATFS文件系统移植

news2024/9/24 13:17:09

准备工作

        本移植基于STM32HAL库,在开始移植之前准备好一个Cubemx、一个待移植的FATFS源码和一张文件格式为FAT32且大小小于等于32G的SD卡。本项目用的是正点原子的F103开发板。

        源码下载:FatFs - Generic FAT Filesystem Module

移植开始

        cubemx代码

        此处配置为SD 1bit(正点原子的开发板有bug,配置为四线后用不了)。

主意,这里的SDIO读写速度计算公式如下

        时钟树下此处的频率(36MHz/(4+2))除以用户自定义的分频系数+2才是真实输出的读写时钟频率,此处为8MHz。

        Fatfs库移植

        库文件导入以后 先打开diskio.c文件内先把diskio.c里的头文件引用全部移到.h里,并添加我们cubemx生成的sdio的头文件。

        随后回去修改 diskio.c里的函数,具体修改后的效果如下图:

        此处初始化由于在cubemx的代码中已经帮我们完成,此处就没必要重复初始化,我在这里实现的是打印SD卡有关的信息。 

        disk_ioctl因为没有用到,暂时不实现内部的功能。

        这里SD卡的读写全是用阻塞方式进行的。 

        下一步,便是修改ffconfi.h里的配置项,分别打开两个,一个是允许文件名为长字符串,一个是运行同时挂载多少个设备。

        改为1.

        这里是支持挂载多少个设备1-10大家可以自行修改。

        这里还有一个设置块大小的,如果是用到一些其他的存储ic的话,这里可以适当修改,由于SD卡一个块就是512byte所以这里也不用改。 

        修改完以后移植工作就完成了。接下来是挂载和测试。

测试

这是挂载的代码,特别提一嘴,这里的第二个变量“0:”很重要,这里的函数会把这个0给提取出来,并作为后续读写函数的pdrv参数传递下去。

        此处我定义了DEV_SD为 0那么我f_mount的时候就应该为“0:”对应的,以读函数为例

这里的参数传递也为0,即我们可以通过0:这个0去索引我们对应的设备进行操作。所以挂载不能乱挂。 

        最后这是测试代码和测试结果,这里有一点不够完善的是,在我们mount以后没有给他unmount掉释放资源。

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

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

相关文章

图片无损压缩工具都有哪些?试试这3款巨好用的压缩软件!支持在线使用

3个图片无损压缩工具推荐,在线免费使用 请你一定要收藏好! 1、转转大师 推荐指数:⭐⭐⭐⭐⭐ 直达链接>>pdftoword.55.la 转转大师是一个专业文档转换工具,支持在线编辑,也是微软office官方中国合作伙伴&…

07.FreeRTOS列表与列表项

文章目录 07. FreeRTOS列表与列表项1. 列表和列表项的简介2. 列表相关API函数3. 代码验证 07. FreeRTOS列表与列表项 1. 列表和列表项的简介 列表的定义: typedef struct xLIST {listFIRST_LIST_INTEGRITY_CHECK_VALUE /* 校验值 */volatile UBaseType_t uxN…

吴恩达机器学习-可选的实验室-正则化成本和梯度

目标 在本实验中,你将: 用正则化项扩展前面的线性和逻辑代价函数。重新运行前面添加正则化项的过拟合示例。 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_overfit import overfit_example, output from lab_utils_common i…

关于vs2022项目占用空间太大的问题

之前在分享vs2022项目(估计其它vs版本也差不多)的时候发现项目占用空间比较大,即使压缩也不利于上传网盘,于是看了一下目录,发现有个隐藏的.vs目录,里面有个和项目同名的文件夹,占用着很大的空间…

⌈ 传知代码 ⌋ MSA+抑郁症模型总结(三)

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

NLP——Transfromer 详解

Transformer总体架构图 输入部分:源文本嵌入层及其位置编码器、目标文本嵌入层及其位置编码器 编码器部分 由N个编码器层堆叠而成 每个编码器层由两个子层连接结构组成 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接 第二个子层连接结构包…

Liunx---批量安装服务器

目录 一、环境准备 一、环境准备 1.准备一台rhel7的主机并且打开主机图形。 2.配置好可用ip 3.做kickstart自动安装脚本后面需要用到DHCP,关闭VMware DHCP功能 二、安装图形化kickstart自动安装脚本的工具 yum install system-config-kickstart ----安装图形化生…

Guitar Pro简谱怎么输入 ?如何把简谱设置到六线谱的下面?

一、Guitar Pro简谱怎么输入 简谱在音乐学习、演奏、创作和传播中都起着非常重要的作用,是音乐领域不可或缺的工具。吉他乐谱的制作可以使简谱,也可以使五线谱、六线谱等多种形式,这几种乐谱都可以使用Guitar Pro来完成。下面来看看Guitar Pr…

springboot大学生社会实践管理信息系统-计算机毕业设计源码61970

目 录 摘要 Abstract 1 绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1技术可行性 2.1.2 经济可行性 2.1.3 社会可行性 2.2 系统流程分析 2.2.1 数据新增流程 2.2.2 数据删除流程 2.3 系统功能分析 2.3.…

谷歌账号被停用后,申诉没有反馈或者被拒绝后怎么办?附:谷歌账号申诉信要点和模板

有一些朋友在登录谷歌账号的时候,或者在是用谷歌账号的过程中突然被强制退出来,然后再次登录的时候就遇到了下面的提醒:您的账号已停用,而且原因通常是两大类:1)谷歌账号与其他多个账号一起创建或使用的&am…

Rust 所有权

所有权 Rust的核心特性就是所有权所有程序在运行时都必须管理他们使用计算机内存的方式 有些语言有垃圾收集机制,在程序运行时,他们会不断地寻找不再使用的内存在其他语言中,程序员必须显式的分配和释放内存 Rust采用了第三种方式&#xff1…

FFmpeg内存对齐简述

目录 引文 行字节数的计算 ffmpeg中的align ffmpeg中的linesize 内容参考 引文 在ffmpeg的使用过程中有时会发现align这个参数,那么这个参数代表什么意思,不同的值会产生什么影响呢,详见下文。 行字节数的计算 理解内存对齐之前首先要…

无人机之导航系统篇

一、导航系统组成 包括惯性导航系统、卫星导航系统、视觉导航系统等。 二、导航原理 利用传感器感知无人机的位置、速度和姿态信息,结合地图数据和导航算法,计算出无人机当前的位置和航向,从而引导无人机按照预设的航线飞行。 三、导航精…

Linux文件或图片名称中文乱码解决【适用于centos、ubuntu等系统】

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

【unittest】TestSuite搭建测试用例示例二

1.1 打开串口示例 常用的模组则包含AT指令测试,或串口数据测试,则可添加串口配置,将指令通过串口发送出去,如下所示: import serial def open_serial_port(port, baudrate115200, timeout2): try: # 创建并配置串…

Vue 3+Vite+Eectron从入门到实战系列之一环境安装篇

Electron 都应该不会陌生了,是一个使用 JavaScript、HTML 和 CSS 构建桌面应用的框架。通过将 Chromium 和 Node.js 嵌入到其二进制文件中,Electron 允许你维护一个 JavaScript 代码库并创建可在 Windows、macOS 和 Linux 上运行的跨平台应用 - 无需原生开发经验。 实现效果…

YOLOv6训练自己的数据集

文章目录 前言一、YOLOv6简介二、环境搭建三、构建数据集四、修改配置文件①数据集文件配置②权重下载③模型文件配置 五、模型训练和测试模型训练模型测试 总结 前言 提示:本文是YOLOv6训练自己数据集的记录教程,需要大家在本地已配置好CUDA,cuDNN等环…

思源笔记结合群晖WebDav与cpolar内网穿透实现跨网络笔记云同步

文章目录 前言1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 前言 本教程主要分享如何将思源笔记、cpolar内网穿透和群晖WebDav三者相结合,实现思源笔记的云同步…

如何使用代理IP进行电子邮件保护?

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 前言 随着企业信息化的深入发展,电子邮件在私人生活和商业运营中起到越来越重要的作用,随之而来电子邮件…

掌握eBay刊登:十大工具助力卖家脱颖而出

在经济全球化的浪潮中,eBay作为全球最大的跨境电商平台之一,为卖家提供了一个展示商品、拓展市场的广阔舞台。然而,平台越大,意味着商家之间的竞争越激烈。如何在eBay上有效刊登商品,是卖家吸引用户的关键步骤。本文将…