RT-Thread:让W25Q128、U盘、SD卡同时搭载文件系统


前言

让U盘和SD卡挂载在本地磁盘的不同目录下。

一、使用ENV配置工程

1、在原博文《RT-Thread:STM32F407同时挂载W25Q128和U盘》的工程上进行配置,使能SDCARD。
在这里插入图片描述
2、修改可挂载文件系统数量为4。
在这里插入图片描述
3、修改卷的数量为3。在这里插入图片描述
4、退出保存,重新生成工程。

二、修改源码和添加用户代码

1、禁止系统启动自动挂载sd卡,因为我们要自己使用用户代码去挂载到指定路径下。
在这里插入图片描述

2、新建sdcard.h和sdcard.c文件,并添加以下代码。
sdcard.c

#include "sdcard.h"

int sdcard_mount(void)
{
	if(rt_device_find("sd0") != RT_NULL)
	{
		if (dfs_mount("sd0", SDCARD_MOUNTPOINT, "elm", 0, 0) == RT_EOK)
		{
			rt_kprintf("sd card mount success.\r\n");
		}
		else
		{
			rt_kprintf("sd card mount failed!\r\n");
			return -1;
		}
	}
	else
	{
		rt_kprintf("no find sd0 device!\r\n");
		return -2;
	}
	
	return RT_EOK;
}
MSH_CMD_EXPORT(sdcard_mount,sdcard mount);

int sdcard_unmount(void)
{
	if(rt_device_find("sd0") != RT_NULL)
	{
		if (dfs_unmount(SDCARD_MOUNTPOINT) == RT_EOK)
		{
			rt_kprintf("sd card unmount");
		}
		else
		{
			rt_kprintf("sd card unmount failed!\r\n");
			return -1;
		}
	}
	else
	{
		rt_kprintf("no find sd0 device!\r\n");
		return -2;
	}
	
	return RT_EOK;
}
MSH_CMD_EXPORT(sdcard_unmount,sdcard unmount);

sdcard.h

#ifndef __SDCARD_H
#define __SDCARD_H

#include <rtthread.h>
#include <dfs_elm.h>
#include <dfs_fs.h>
#include <dfs_posix.h>

#define SDCARD_MOUNTPOINT "/sdcard"

int sdcard_mount(void);
int sdcard_unmount(void);
	
#endif

3、在根目录下新建sdcard文件夹,以后的sd卡就挂载在这。
在这里插入图片描述
4、编译下载运行,先输入命令w25q128_mount进行挂载才有本地磁盘,然后再输入命令sdcard_mount挂载SD卡,插上U盘可以进行自动挂载U盘了。
在这里插入图片描述
5、其实SD卡的代码还有BUG,发现如果上电前不事先把SD卡插上就会无法识别,即使已经识别到SD卡,也不能二次拔插,后面再解决这个BUG,看看到底咋回事…


总结

躺尸睡觉...
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RT-Thread是一个实时操作系统,可以在不同的硬件平台上运行。在使用RT-Thread操作系统时,可以使用SD接口实现对SD数据的读和写。 具体实现的步骤如下: 1. 创建基本工程,包括创建Bootloader和相关组件的配置。 2. 在STM32F4芯片系列中,只支持SD 2.0协议,即SDSDHC。不支持SDXC协议,同时也只支持读取512大小的数据块。因此,在选择SD时需要注意其兼容性和数据块大小的设置。 3. SD具有物理结构,需要了解其具体规格和连接方式,以确保正确的使用和操作。 4. 在使用RT-Thread操作系统时,可以根据具体的开发板和硬件平台选择合适的驱动和框架,如使用FSMC总线驱动TFT显示屏、SPI驱动W25Qxx Nor flash等。 总之,RT-Thread操作系统提供了对SD的支持,可以通过配置和选择合适的驱动和框架来实现对SD数据的读和写操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [RT-Thread Studio驱动SD](https://blog.csdn.net/weixin_37875741/article/details/109733737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [rt-thread驱动篇(07)---STM32F429单片机SD驱动添加](https://blog.csdn.net/m0_37845735/article/details/124548387)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [RT-Thread1.2.0.rar_STM32 RT-Thread_STM32 SPI TF_STM32的SDIO例程_s](https://download.csdn.net/download/weixin_42659252/86145822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小破孩 != ERR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值