我是靠谱客的博主 精明夏天,最近开发中收集的这篇文章主要介绍RT-Thread:让W25Q128、U盘、SD卡同时搭载文件系统前言一、使用ENV配置工程二、修改源码和添加用户代码总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 前言
- 一、使用ENV配置工程
- 二、修改源码和添加用户代码
- 总结
前言
让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.rn");
}
else
{
rt_kprintf("sd card mount failed!rn");
return -1;
}
}
else
{
rt_kprintf("no find sd0 device!rn");
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!rn");
return -1;
}
}
else
{
rt_kprintf("no find sd0 device!rn");
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,看看到底咋回事…
总结
躺尸睡觉...最后
以上就是精明夏天为你收集整理的RT-Thread:让W25Q128、U盘、SD卡同时搭载文件系统前言一、使用ENV配置工程二、修改源码和添加用户代码总结的全部内容,希望文章能够帮你解决RT-Thread:让W25Q128、U盘、SD卡同时搭载文件系统前言一、使用ENV配置工程二、修改源码和添加用户代码总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复