当前位置: 首页 > news >正文

sd卡挂载返回FR_NOT_READY等错误

前言

        本文章主要是例举文件系统挂载sd卡时出现的一下问题总结。本人用的芯片是GDF103系列,最近项目要使用sd进行读取文件,因此查阅了资料进行开发。一开始是使用了SPI方式连接,例程是原子哥的stm32进行改的,但多次调试都是卡死在发送cmd0命令那里,连获取卡信息都没成功,就更不要谈文件系统了。后面重新用sdio进行连线,并且用gd官方的例程进行调试。最终成功获取卡信息并打印,但挂载时一直返回FR_NOT_READY,也就是3号错误。但是我已经能打印卡信息 了,证明初始化是没问题的。我也找了挺多博客,话不多说,下面是链接:

1. 文件系统的FATFS变量是局部或者是全局指针,如果在系统中可能有问题,应该定义为全局变量,挂载时进行取址

fatfs 移植, f_open返回 FR_NOT_ENABLED-OpenEdv-开源电子网


2. 文件系统的ffconf.h头文件挂载数量默认为1个存储器,要同时挂载多个应该修改,并且设立对应的全局变量或者宏定义来调整diskio.c各个函数选项

FATFS 0.13 f_mount(&fs,““,1)挂载失败的原因_mode option 0:do not mount (delayed mount), 1:moun-CSDN博客


3. 挂载时如果失败了,可能是存储介质还没准备好,再次进行挂载即可

FATFS 0.13 f_mount(&fs,““,1)挂载失败的原因_mode option 0:do not mount (delayed mount), 1:moun-CSDN博客


4. 可能是挂载的磁盘大小和扇区数量宏定义设置不对,要根据自己的存储器进行设置

FATFS文件系统异常FR_NOFILESYSTEM_fatfs文件关了重新打开显示无文件系统-CSDN博客

5. 重点,也是本人的最终问题解决:由于初始化后就可以打印卡信息,那么就是连接上了,但是挂载这里没成功,最后发现是文件系统挂载调用的sd卡初始化,返回值是29,在disk_initialize里面判断是如果返回值>=0那么就是错误,而我的初始化返回值是29是ok。所以就搞乌龙了,最后在我的初始化函数里面加一个返回值判断即可。如图:

 diskio.c 文件

sdcard.c文件


总结

      其实在此之前遇到过HardFault_Handler死循环等错误,但是做开发就是这样,永远不可能一帆风顺的完成需求,总会遇到许许多多奇奇怪怪的拦路小妖怪。而发现它,解决它,这个过程就是学习,不过也希望大家都能遇到bug很快将其消灭。最后,送上大佛压阵

//                             _ooOoo_  
//                            o8888888o  
//                              88" . "88  
//                               (| -_- |)  
//                               O\ = /O  
//                         ____/`---'\____  
//                              . ' \\| |// `.  
//                             / \\||| : |||// \  
//                          / _||||| -:- |||||- \  
//                             | | \\\ - /// | |  
//                          | \_| ''\---/'' | |  
//                         \ .-\__ `-` ___/-. /  
//                     ___`. .' /--.--\ `. . __  
//                   ."" '< `.___\_<|>_/___.' >'"".  
//                    | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                   \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖保佑             永无BUG 
//          佛曰:  
//                  写字楼里写字间,写字间里程序员;  
//                  程序人员写程序,又拿程序换酒钱。  
//                  酒醒只在网上坐,酒醉还来网下眠;  
//                  酒醉酒醒日复日,网上网下年复年。  
//                  但愿老死电脑间,不愿鞠躬老板前;  
//                  奔驰宝马贵者趣,公交自行程序员。  
//                  别人笑我忒疯癫,我笑自己命太贱;  
//                  不见满街漂亮妹,哪个归得程序员?
 

相关文章:

sd卡挂载返回FR_NOT_READY等错误

前言 本文章主要是例举文件系统挂载sd卡时出现的一下问题总结。本人用的芯片是GDF103系列&#xff0c;最近项目要使用sd进行读取文件&#xff0c;因此查阅了资料进行开发。一开始是使用了SPI方式连接&#xff0c;例程是原子哥的stm32进行改的&#xff0c;但多次调试都是卡死在发…...

推荐一款超级实用的浏览器扩展程序!实时翻译网页,支持多种语言(带私活源码)

今天给大家分享的一款浏览器插件。 一、背景 在如今的信息时代&#xff0c;互联网已经成为了人们获取信息、交流和娱乐的重要平台&#xff0c;而随着全球化的不断深入和交流的加强&#xff0c;越来越多的人开始关注各国的文化、政治和经济&#xff0c;因此需要浏览不同语言的…...

manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)

要在 Manjaro KDE 24 上设置网络连接&#xff0c;可以按照以下步骤进行设置&#xff0c;确保你能够连接到互联网&#xff1a; 是的&#xff0c;你可以尝试使用一个简单的自动修复脚本来解决 Manjaro KDE 中的网络连接问题。这个脚本将检查网络服务、重新启动 NetworkManager、…...

2024软件测试面试大全(答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到…...

unity动态批处理

unity动态批处理 动态批处理要求和兼容性渲染管线兼容性 使用动态批处理网格的动态批处理限制动态生成几何体的动态批处理 动态批处理 动态批处理是一种绘制调用批处理方法&#xff0c;用于批处理移动的 GameObjects 以减少绘制调用。动态批处理在处理网格和 Unity 在运行时动…...

faust,一个神奇的 Python 库!

大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - faust。 Github地址&#xff1a;https://github.com/robinhood/faust 在分布式系统和实时数据处理的世界里&#xff0c;消息流处理&#xff08;Stream Processing&#xff09;变得越来越重要。Faust 是一个 Python 库…...

electron本地OCR实现

使用tesseract.js - npm (npmjs.com) 官方demo&#xff1a;GitHub - Balearica/tesseract.js-electron: An example to use tesseract.js in electron 目录结构&#xff1a; // 引入 <script type"module" src"./ocr/tesseract.js"></script>…...

RK3588的demo板学习

表层的线宽是3.8mil: 换层之后线宽变成了4.2mil: (说明对于一根线&#xff0c;不同层线宽不同) 经典&#xff1a; 开窗加锡&#xff0c;增强散热&#xff0c;扩大电流&#xff1a; R14的作用&#xff1a;与LDO进行分压&#xff0c;降低LDOP的压差从而减小其散热&#xff1a;第…...

基于springboot驾校管理系统

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…...

关于Vue脚手架

一、简介与安装 1 简介 Vue Cli 全称Vue command line interface(Vue命令行接口)&#xff0c;俗称Vue脚手架&#xff0c; 是Vue官方提供的一个标准化开发工具(开发平台)。 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 参考官网&#xff1a…...

MySQL 指定字段排序

MySQL 中的 ORDER BY FIELD 用法详解 一、引言 在数据库查询中&#xff0c;排序是一个常见的需求。MySQL 提供了 ORDER BY 子句来对查询结果进行排序&#xff0c;其中 FIELD() 函数是一种非常巧妙且灵活的排序方式。通过 ORDER BY FIELD&#xff0c;可以按照指定的顺序对某个…...

Mysql—高可用集群MHA

1:什么是MHA&#xff1f; MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切…...

MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读

目录 一、概述 二、相关工作 1、神经渲染 2、基于Mesh的渲染 3、基于点的渲染和高斯溅射 三、前置知识 1、SDF 2、Marching Cubes算法 四、MeshGS 1、初始化Mesh网格 2、基于Mesh的GS溅射 3、损失函数 一、概述 提出一种基于距离的高斯splatting&#xff0c;并且将高…...

JDK-23与JavaFX的安装

一、JDK-23的安装 1.下载 JDK-23 官网直接下载&#xff0c;页面下如图&#xff1a; 2.安装 JDK-23 2.1、解压下载的文件 找到下载的 ZIP 文件&#xff0c;右键点击并选择“解压到指定文件夹”&#xff0c;将其解压缩到您希望的目录&#xff0c;例如 C:\Program Files\Java\…...

LeetCode讲解篇之2266. 统计打字方案数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用逆向思维发现如果连续按存在三个字母的按键&#xff0c;最后一个按键表示的字母可以是某个字母连续出现一次、两次、三次这三种情况的方案数之和 我们发现连续按存在三个字母的按键&#xff0c;当连续按…...

2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…...

Vue 3 的不同版本总结

Vue 3 的不同版本&#xff08;例如 3.x 系列的多个次版本&#xff09;在语法和特性上有一些变化和改进。以下是 Vue 3 中随着版本迭代的一些语法变化和新特性的总结。 1. Vue 3.0: 初始发布 主要特性&#xff1a; 组合式 API (Composition API)&#xff1a;引入 setup 函数&…...

在wpf 中 用mvvm 的方式 绑定 鼠标事件

在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i“http://schemas.microsoft.com/xaml/behaviors” 完…...

TELEDYNE DALSA相机连接编码器

文章目录 对于线阵相机&#xff0c;欲令扫描拍照出来的图像不失真变形&#xff0c;则需要保证横向像素精度纵向像素精度&#xff0c;因此有下列等式成立&#xff1a; 现场的横向视野是650mm,横向实际像素是7663pixel&#xff0c;产线运动线速度为416.667mm/S,则可以计算出行频应…...

每天一个数据分析题(五百零八)- 机器学习模型

逻辑回归和支持向量机&#xff08;SVM&#xff09;都是经典的机器学习模型&#xff0c;逻辑回归和SVM的联系与区别&#xff0c;不正确的是&#xff1f; A. 二者都可以处理分类问题 B. 二者都可以增加不同的正则化项 C. 二者都是参数模型 D. SVM的处理方法是只考虑support v…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...