在RT-Thread STM32F407平台下配置SPI flash为U盘
记录下SPI Flash U盘实现过程中踩过的坑,与您分享。
前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功。如下图

然后开始配置USB
1,在CubeMX,选择SUB_OTG_FS

2 选择USB Device

3,确认USB时钟为48MHz

4,生成代码,然后打开生成的工程,如下
【1】将工程中void SystemClock_Config(void)的代码更新到RT-thread 平台board.c相同的函数内替换掉原有代码。
【2】将生成的USB 引脚初始化程序复制到board.c 内。
void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
{GPIO_InitTypeDef GPIO_InitStruct = {0};if(pcdHandle->Instance==USB_OTG_FS){/* USER CODE BEGIN USB_OTG_FS_MspInit 0 *//* USER CODE END USB_OTG_FS_MspInit 0 */__HAL_RCC_GPIOA_CLK_ENABLE();/**USB_OTG_FS GPIO ConfigurationPA11 ------> USB_OTG_FS_DMPA12 ------> USB_OTG_FS_DP*/GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/* Peripheral clock enable */__HAL_RCC_USB_OTG_FS_CLK_ENABLE();/* Peripheral interrupt init */HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0);HAL_NVIC_EnableIRQ(OTG_FS_IRQn);/* USER CODE BEGIN USB_OTG_FS_MspInit 1 *//* USER CODE END USB_OTG_FS_MspInit 1 */}
}void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle)
{if(pcdHandle->Instance==USB_OTG_FS){/* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 *//* USER CODE END USB_OTG_FS_MspDeInit 0 *//* Peripheral clock disable */__HAL_RCC_USB_OTG_FS_CLK_DISABLE();/**USB_OTG_FS GPIO ConfigurationPA11 ------> USB_OTG_FS_DMPA12 ------> USB_OTG_FS_DP*/HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);/* Peripheral interrupt Deinit*/HAL_NVIC_DisableIRQ(OTG_FS_IRQn);/* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 *//* USER CODE END USB_OTG_FS_MspDeInit 1 */}
}5,配置RT-Thread平台代码
【1】在RT-thread studio中打开RT-Thread Settings,然后在右上角的搜索栏内输入USB
【2】选择使用USB,设置如下

注意,磁盘名是指SPI Flash 文件系统分区时指定的名称,将来USB组件需要通过该名称查找注册的设备进行关联

系统挂载分区时需要用到此名字
6,打开board/Kconfig,加入如下代码后保存。
config BSP_USING_USBDbool "Enable OTGFS as USB device"select RT_USING_USB_DEVICEdefault nconfig BSP_USBD_EP_ISOCbooldefault ndepends on BSP_USING_USBDconfig BSP_USING_STM32_SDIObool "Enable SDIO"select RT_USING_SDIOselect PKG_USING_STM32_SDIOdefault nhelpBSP_USING_STM32_SDIO use drv_sdio_adapter.c,andBSP_USING_SDIO use drv_sdio.c config BSP_USING_ON_CHIP_FLASHbool "Enable On Chip FLASH (LittleFS)"select BSP_USING_FS select RT_USING_DFSselect RT_USING_DFS_ROMFSselect RT_USING_MTD_NOR select PKG_USING_FALselect FAL_USING_AUTO_INITselect FAL_PART_HAS_TABLE_CFGselect PKG_USING_LITTLEFSdefault n
7,在RT-Thread Settings中开启USBD功能选项

8,保存RT-Thread Settings更新配置后,重新编译
硬件上确保USB线序正确,D+线配置成上拉或者加上拉电阻。然后重新在程序,将此USB连线插入电脑,几秒钟后显示如下

然后打开U盘,新建文件text.txt,然后操作如下

保存后关闭文件,拔出U盘
在finsh命令端口操作如下

说明新建文件已经成功保存到SPI flash内。
相关文章:
在RT-Thread STM32F407平台下配置SPI flash为U盘
记录下SPI Flash U盘实现过程中踩过的坑,与您分享。前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功。如下图然后开始配置USB1,在CubeMX,选择SUB_OTG_FS2 选择USB Device3,确认USB时钟为48…...
数据存储技术复习(二)未完
module3存储是数据中心内的核心元素。请说明常用的存储选项及其特点。磁盘驱动器:具有很大的存储容量,随机读/写访问闪存驱动器:使用半导体介质,提供高性能,低功耗2.若某磁盘驱动器显示每个磁道有八个扇区&…...
使用 QuTrunk+Amazon Deep Learning AMI(TensorFlow2)构建量子神经网络
量子神经网络是基于量子力学原理的计算神经网络模型。1995年,Subhash Kak 和 Ron Chrisley 独立发表了关于量子神经计算的第一个想法,他们致力于量子思维理论,认为量子效应在认知功能中起作用。然而,量子神经网络的典型研究涉及将…...
python selenium浏览器复用技术
使用selenium 做web自动化的时候,经常会遇到这样一种需求,是否可以在已经打开的浏览器基础上继续运行自动化脚本? 这样前面的验证码登录可以手工点过去,后面页面使用脚本继续执行,这样可以解决很大的一个痛点。 命令行…...
第二章:创建虚拟机
创建Windows server:首先第一步就是打开我们的vm,然后找到上一章讲的主页图标创建新的虚拟机。点击这上面类似的,然后转站。博文地址:https://blog.csdn.net/ryduijftgvhj/article/details/127934939?spm1001.2014.3001.5502视频…...
码上【call,apply,bind】的手写
一、call (1)官方用法 call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 语法:function.call(要绑定的this值,参数,参数,…)。不一定这些参数都需要,这些参数都…...
代谢组学Nature子刊!抑郁症居然“男女有别”,脑膜淋巴管起关键作用!
文章标题:A functional role of meningeal lymphatics in sex difference of stress susceptibility in mice 发表期刊:Nature Communications 影响因子:17.694 发表时间:2022年8月 作者单位:中山大学中山医学院 …...
nacos配置中心搭建
网站每次更新版本都有短暂暂停,影响用户使用,返回经常不可用,需要改进 需要实现高可用,搭建负载均衡,实现jenkinsnacos不停机部署 nacos搭建预备环境准备 64 bit OS,支持 Linux/Unix/Mac/Windows&#x…...
uni-app低成本封装一个取色器组件
在uni-ui中找不到对应的工具 后面想想也是 移动端取色干什么? 没办法 也挂不住特殊需求 因为去应用市场下载 这总东西 又不是很有必要 那么 下面这个组件或许能解决您的烦恼 <template><view class"content"><view class"dialog&…...
APP 怎么免费接入 MobPush
1、获取 AppKey 申请 Appkey 的流程,请点击 http://bbs.mob.com/thread-8212-1-1.html?fromuid70819 2、下载 SDK 下载解压后,如下图: 目录结构 (1)Sample:演示Demo。(2)SDK&am…...
XGBoost
目录 1.XGBoost推导示意图 2.分裂节点算法 Weighted Quantile Sketch 3.对缺失值得处理 1.XGBoost推导示意图 XGBoost有两个很不错得典型算法,分别是用来进行分裂节点选择和缺失值处理 2.分裂节点算法 Weighted Quantile Sketch 对于特征切点点得选择ÿ…...
你是什么时候从轻视到高看软件测试的?
刚开始学软件测试很轻视,因为我那时很无知,这也是那时绝大多数人员的心态,那时中国最讲究“编程才是硬道理”。 如今却非常热爱软件测试,包括软件测试工具,方法,理论,技术。因为我在3年的测试工…...
基于ssm的航空售票系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经从做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言…...
滑动窗口最大值
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 …...
接口文档参考示例
接口文档参考示例 用户登录 - POST /api/login/ 接口说明:登录成功后,会生成或更新用户令牌(token)。 使用帮助:测试数据库中预设了四个可供使用的账号,如下表所示。 Untitled 请求参数: Untitled 响应信息: 登录成功: {"code": 30000, "message&qu…...
2010-2019年290个城市经济发展与环境污染数据
2010-2019年290个城市经济发展与环境污染数据 1、时间:2010-2019年 2、统计口径:全市 3、来源:城市统计NJ,缺失情况与年鉴一致 4、指标包括: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…...
web开发
目录 使用Idea搭建Web项目 使用Idea开发Web项目基本知识 tomcat配置信息 HTML /CSS 开发主页 Servlet 学习和掌握的内容: HTML/CSSServlet MVC模式和Web开发数据库基本应用和JDBC应用软件项目开发流程 环境及工具版本: Windows10,JDK1.8 Idea2…...
【数据结构】优先级队列----堆
优先级队列----堆优先级队列堆堆的创建堆的插入:堆的删除:PriorityQueue的特性PriorityQueue的构造与方法优先级队列 优先级队列: 不同于先进先出的普通队列,在一些情况下,优先级高的元素要先出队列。而这种队列需要提…...
Python深度学习实战PyQt5信号与槽的连接
本文讲解信号与槽的连接机制,详细示范各种类型的信号/槽连接的实现方法,这是图形用户界面的核心内容。还将介绍面向对象的程序设计,这是图形用户界面的基本思想目录1. 信号与槽(Signals and slots)信号与槽机制是 PyQt…...
Window 10 OpenCV 打开罗技(Logitech)摄像头速度慢问题解决
采用最新版OpenCV 4.7.0 摄像头对罗技摄像头进行视频图像抓取时,发现存在打开摄像头慢的问题。 测试环境如下: 系统Windows 10 专业版CPUIntel i7-7700K 4.20GHz 摄像头型号罗技Logitech C930c 网络摄像头OpenCV版本4.7.0语言C 测试结果表明ÿ…...
从恒流源到差动放大:铂电阻测温电路的优化路径与实践
1. 铂电阻测温基础与设计挑战 铂电阻作为工业测温的中坚力量,其核心优势在于稳定的物理特性。PT100在0℃时标称电阻为100Ω,温度系数为0.385Ω/℃。这个看似简单的参数背后,却隐藏着电路设计的三大矛盾:灵敏度与噪声的博弈、线性度…...
Universal Data Tool 新功能解析:骨骼姿态标注与数据格式转换实战
1. 项目概述:一个数据标注工具的进化最近在整理一个计算机视觉项目的数据集时,我又一次打开了Universal Data Tool(UDT)。这个工具我用了快两年了,从它早期版本支持基础的图像分类和物体检测框标注开始,就一…...
如何打造Koel音乐流的终极插件生态:从开发到分发的完整指南
如何打造Koel音乐流的终极插件生态:从开发到分发的完整指南 【免费下载链接】koel Music streaming solution that works. 项目地址: https://gitcode.com/gh_mirrors/ko/koel Koel是一款功能强大的音乐流媒体解决方案,通过其灵活的扩展机制&…...
凌晨还在改论文?这些降重黑科技帮你一键通关
凌晨对着电脑屏幕改论文,那种既疲惫又焦虑的感觉,经历过的人都懂。好在现在的降重工具已经不只是“替换同义词”那么简单了,像 毕业之家 和 PaperRed 这两款主流工具,各自走了完全不同的技术路线,可以根据你的痛点来选…...
从HEX到芯片:使用J-Flash实现高效固件烧录与生产级加密
1. 认识J-Flash:你的芯片烧录好帮手 第一次接触J-Flash时,我正为一个量产项目发愁——需要给500片GD32F103烧录固件。手动用IDE一个个烧?效率太低;找代工厂?成本太高。直到同事推荐了J-Flash,我才发现原来烧…...
Mixtral-8x7B模型在消费级GPU上推理:混合量化与动态专家卸载实战
1. 项目概述与核心思路拆解最近在折腾大语言模型本地部署的朋友,估计都对Mixtral-8x7B这个“庞然大物”又爱又恨。爱的是它作为开源MoE(专家混合)模型的标杆,性能强悍;恨的是它那惊人的参数量(约47B&#x…...
上网行为怎么监控?教你五个简单实用的上网行为监控方法,建议收藏
在数字化办公时代,企业管理面临着新的挑战:一方面需要网络提供资讯和工具,另一方面,无节制的非工作上网行为正在侵蚀企业的生产力。如何科学、合理地监控上网行为?以下为您介绍五个监控方法,涵盖了从硬件到…...
DeepSeek API Gateway与大模型推理服务深度协同:如何实现Token级流控、异步响应封装、Streaming SSE自动保活?
更多请点击: https://intelliparadigm.com 第一章:DeepSeek API Gateway架构全景与核心定位 DeepSeek API Gateway 是面向大模型服务的高性能、可扩展网关系统,承担请求路由、认证鉴权、流量控制、协议转换与可观测性聚合等关键职责。它并非…...
JEB Pro 5.40 (macOS, Linux, Windows) - Android 反编译器和调试器
JEB Pro 5.40 (macOS, Linux, Windows) - 逆向工程平台 Reverse Engineering for Professionals. 请访问原文链接:https://sysin.org/blog/jeb/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org JEB Decompiler JEB 是逆向工程…...
DIY焊台实战:用STM32F070F6P6的Encoder模式搞定EC11编码器(附完整CubeMX配置)
DIY焊台实战:用STM32F070F6P6的Encoder模式搞定EC11编码器(附完整CubeMX配置) 在电子DIY的世界里,焊台是每个硬件爱好者的必备工具。而一个精准可控的T12焊台,不仅能提升焊接效率,更能让整个DIY过程充满乐趣…...
