RT-Thread使用——USB虚拟U盘(USB大容量存储设备)

RT-Thread使用——USB虚拟U盘(USB大容量存储设备)

前言

前面写了《RT-Thread使用——SPI驱动SD/TF卡挂载文件系统》这篇文章,本文在这篇文章的基础上,实现虚拟U盘,这样就可以方便地访问stm32写进SD卡中的文件了。

平台

芯片:STM32F405RGT6
RT-Thread版本:4.1.0(发行版)
硬件连接:SPI3连接SD卡,片选引脚PC2

配置ENV

  1. 添加USB组件,将设备作为大容量存储设备(MSC)
    在这里插入图片描述
  2. 使能USB
    在这里插入图片描述
    对应的Kconfig设置如下
    在这里插入图片描述
    配置完成后,scons生成工程即可。

配置CubeMX

  1. 配置USB_OTG_FS,模式配置为Device_Only
    在这里插入图片描述
  2. 设置为大容量存储设备类型
    在这里插入图片描述
  3. 配置时钟,USB时钟频率为48MHz
    在这里插入图片描述
    配置完成后,生成工程。

添加代码

  1. 在CubeMX生成的工程中,复制main.c中的SystemClock_Config函数,并替换rt-thread工程中board.c中的SystemClock_Config函数。
    在这里插入图片描述
  2. main函数中加入初始化文件系统的代码(详情参考之前的文章《RT-Thread使用——SPI驱动SD/TF卡挂载文件系统》
	if(dfs_elm_init() == RT_EOK)
	{
		rt_kprintf("[FS]dfs elm init ok\n");
	}

配置到这里,直接编译并下载代码运行的话,USB连接电脑后,会报“disk open error”的错误
在这里插入图片描述
网上查了资料后,在这篇博文中找到了解决方向,即博文中所提到的“block只能被打开一次”。
解决的办法是在usb mstorage.c 的_function_enable函数那里在open前先做判断,如果已经open了,则不需要再open了

	if(!(data->disk->open_flag & RT_DEVICE_OFLAG_OPEN))
    {
        if(rt_device_open(data->disk, RT_DEVICE_OFLAG_RDWR) != RT_EOK)
        {
            rt_kprintf("disk open error\n");
            return -RT_ERROR;
        }
    }

到这里,代码就修改添加完毕。

运行程序

编译并下载完程序后,USB连接板子和电脑,就可以看到U盘了,并且可以打开和复制U盘中的文件。不过与前面提到的文章一样,存在一个问题,在stm32中修改文件,或者电脑端修改U盘中的文件,不会同步。目前的使用需求是复制文件即可,后续有空再优化了。
在这里插入图片描述

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread Studio是一款基于Eclipse的RT-Thread开发环境,它提供了一整套的开发工具,包括代码编辑器、编译器、调试器等,用于开发实时操作系统(RTOS)上的嵌入式软件。使用RT-Thread Studio,开发者可以更高效地进行实时系统的开发和调试。以下是关于RT-Thread Studio使用的一些主要特点和介绍: 1. 集成开发环境(IDE):RT-Thread Studio提供了直观的图形界面,使开发者能够轻松地创建、编辑、编译和调试RT-Thread应用程序。 2. 代码编辑器:RT-Thread Studio的代码编辑器支持多种语言,包括C/C++,开发者可以在其中编写和编辑代码。 3. 编译器:RT-Thread Studio集成了RT-Thread的编译器,可以将编写好的代码编译成可在嵌入式设备上运行的二进制文件。 4. 调试器:RT-Thread Studio提供了强大的调试工具,允许开发者在嵌入式设备上实时观察和修改代码的运行状态,以便进行调试和优化。 5. 集成工具链:RT-Thread Studio集成了RT-Thread的开发工具链,包括交叉编译工具、下载工具、性能分析工具等,方便开发者进行整个开发流程。 6. 代码版本管理:RT-Thread Studio支持代码版本管理,如Git,方便团队进行协作开发和版本控制。 7. 实时更新和文档:RT-Thread Studio提供了实时更新的RT-Thread版本和相关文档,方便开发者获取最新的功能和信息。 8. 集成仿真器:RT-Thread Studio支持多种仿真器,如QEMU、STM32CubeMX等,方便开发者在开发过程中进行模拟和调试。 使用RT-Thread Studio进行实时系统开发的一般步骤如下: 1. 安装和配置RT-Thread Studio:根据官方文档或教程,安装并配置RT-Thread Studio环境。 2. 创建新项目:使用RT-Thread Studio创建新的实时系统项目。 3. 编写代码:在代码编辑器中编写C/C++代码,实现所需的功能。 4. 编译代码:使用RT-Thread编译器将代码编译成可在嵌入式设备上运行的二进制文件。 5. 下载和部署:使用RT-Thread Studio提供的下载工具将二进制文件部署到嵌入式设备上。 6. 调试和优化:使用RT-Thread Studio的调试工具进行实时调试和性能优化。 7. 测试和发布:对部署到嵌入式设备上的软件进行测试,确保功能正常,然后进行发布。 总的来说,使用RT-Thread Studio进行实时系统开发可以提高开发效率,简化开发流程,并有助于提高软件的质量和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值