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,看看到底咋回事…


总结

躺尸睡觉...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小破孩 != ERR

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

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

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

打赏作者

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

抵扣说明:

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

余额充值