利用STM32CubeMX软件生成USB_HOST读写U盘

2023-11-09

一、测试平台:
MCU:STM32F429IGT6
工具:STM32CubeMX软件
编译软件:MDK

二、配置步骤
(1).打开STM32CubeMX软件,创建新的工程文件,点击ACCESS TO MCU SELECTOR选项。
在这里插入图片描述
(2).选择芯片型号,在这里选择STM32F429IGT6型号。
在这里插入图片描述
(3).配置时钟,点击System Core项下的RCC栏,由于电路板上有外部晶振,这里配置外部晶振,High Speed Clock(HSE),Low Speed Clock(LSE)都设置为Crystal/Ceramic Resonator。
在这里插入图片描述
(4),配置时钟数(Clock Configuration),由于电路板上的晶振分别为25MHZ,32.768KHZ,在这里我们输入25MHZ,HCLK栏输入180之后按回车键,让软件自动配置完成。
在这里插入图片描述
(5).配置串口1,用于调试使用,Mode栏选择Asynchronous,管脚选择PA9,PA10,电路板上串口1对应PA9,PA10,勾选USART1 global interrupt中断。
在这里插入图片描述
(6).填写工程文件信息,按如下图示设置即可
在这里插入图片描述
在这里插入图片描述
(7).生成代码,用于测试串口1生成的工程项目是否可用,点击GENERATE CODE。
(8).测试代码,在工程文件中添加代码int fputc(int ch,FILE *f),勾选Use MicroLIB选项,用printf函数测试串口1的功能。
在这里插入图片描述
在这里插入图片描述
(9).配置USB_OTG,由于电路板上的USB引出来的管脚是PB14,PB15,所以在这里需要配置USB_OTG_HS,由于电路板上没有外接Phy,所以这里配置为内部的FS Phy,Internal FS Phy选项下Host Only。
在这里插入图片描述
(10).配置USB_HOST,由于我们是用做U盘的读写,所以在这里配置为Class For HS IP项下选择Mass Storage Host Class。
在这里插入图片描述
(11).配置FATFS,勾选USB Disk,由于我们需要用到中文,所以CODE PAGE选择Simplified Chinese (DBCS),配置为长文件名,USE_LFN选择Enabled with static working buffer on…
在这里插入图片描述
(12).配置完USB之后,返回Clock Configuration界面下更新时钟,可看到48MHZ的时钟现在生效了,用来操作U盘的,再次生成代码GENERATE CODE。
在这里插入图片描述
(13).打开工程文件,替换USBH_UsrLog(…)宏定义为
#define USBH_UsrLog(…) do {
printf(“USBH_UsrLog: “) ;
printf(VA_ARGS);
printf(”\n”);
} while (0)
在这里插入图片描述
(14).编译完成之后,下载到电路板上,插入U盘,串口1输出以下信息,说明生成的USB Host成功。

在这里插入图片描述
(15),若需要生成带有FreeRtos的工程,则配置FreeRtos。
在这里插入图片描述
(16).USB_Host需要重新设置一下,CMSIS_RTOS中的 USBH_USE_OS Enable,USBH_PROCESS_STACK_SIZE 512,默认堆栈大小为128,经实验当U盘插入之后,程序会进入HardFault_Handler,修改为512正常。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用STM32CubeMX软件生成USB_HOST读写U盘 的相关文章

  • 在地址“0xXXXXXX”处中断,没有可用的调试信息,或在程序代码之外

    配置 使用 Nucleo L476RG 使用 GNU ARM Eclipse 我从 STM32CubeMX 生成了一个极简代码 我已经在我的板载 ST Link 中刷新了 J link 驱动程序 一直在尝试为我的代码运行调试器 但我的程序计
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • 如何让printf在STM32F103上工作?

    我是 STM32F103 世界的新手 我有一个STM32F103的演示代码 我正在使用arm none eabi来编译它 我尝试了在谷歌上可以找到的内容 但到目前为止没有任何效果 我已经花了三天时间来解决这个问题 任何人都可以给我一个运行良
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 140-基于stm32单片机智能晾衣杆控制系统Proteus仿真+源程序

    资料编号 140 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 光敏传感器 蜂鸣器 LED灯 制作一个基于stm32单片机智能晾衣杆控制系统Proteus仿真 2 通过光敏传感器
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • Push_back() 导致程序在进入 main() 之前停止

    我正在为我的 STM32F3 Discovery 板使用 C 进行开发 并使用 std deque 作为队列 在尝试调试我的代码 直接在带有 ST link 的设备上或在模拟器中 后 代码最终在 main 中输入我的代码之前在断点处停止 然
  • STM32F103

    提示 来源正点原子 参考STM32F103 战舰开发指南V1 3PDF资料 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 开发环境硬件普中科技 接线图在g
  • 擦除后无法写入闪存

    所以我不能在擦除后直接写入内部闪存 如果写操作之前没有擦除操作 那么我可以 有什么想法吗 编程函数返回 成功写入 值 但查看内存时 没有写入任何数据 这是代码 uint32 t pageAddress 0x08008000 uint16 t
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • STM32 暂停调试器时冻结外设

    当到达断点或用户暂停代码执行时 调试器可以停止 Cortex 中代码的执行 但是 当皮质停止在暂停状态下执行代码时 调试器是否会冻结其他外设 例如 DMA UART 和定时器 您只能保留时间 r 取决于外围设备 我在进入主函数时调用以下代码
  • STM32的HAL中实现单按、长按和双按功能

    我正在尝试实现单击 双击和长按功能来执行不同的功能 到目前为止 我已经理解了单击和长按的逻辑 但我不知道如何检测双击 至于代码 我使用计数器实现了单击和长按 但代码仅停留在第一个 if 条件上 bool single press false
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

    我正在使用 Nucleo STM32L031 和 AC6 STM32 工作台 eclipse 我编写应用程序并进入调试模式 一切正常 直到我在应用程序中添加另一个功能 我注意到当我删除 评论 新函数 软件可以再次进入调试模式 但是当我添加

随机推荐

  • Android-布局管理器

    线性布局 Linearlayout 属性 orientation 布局管理器内组件的排列方式 horizontal 水平 和vertical 垂直 默认值为 horizontal layout weight 权重 用于设置组件占父容器剩余空
  • 网易云音乐播放器部分问题集

    这周在做网易云音乐播放器 这期间遇到了不少问题 下面就来记录一下我所遇到的部分问题 一 接口问题 调用网易云的接口 网上一搜方法一大堆 但是我的理解有些问题 硬生生搞了好久 下面就给那个方法再重新小白化一遍TAT 安装环境 首先你要有nod
  • FastAPI Web框架 [Pydantic]

    学习一下 做个记录 Starlette Pydantic 与 FastAPI 的关系 Python 的类型提示 type hints Pydantic 是一个基于 Python 类型提示来定义数据验证 序列化和文档 使用JSON 模式 库
  • 基于Arduino IDE 和ESP32-CAM 制作远程摄像头

    说明 具体教程及详细步骤参考 arduino esp32 cam环境配置和例程使用 在这里仅仅针对个人在开发过程中的一点经验及上文帖子没提到的一些部分做一个总结 因为我当初根据这个教程做的时候有以下几点是导致我一开始浪费了大量时间精力的 特
  • redis设计与实现读书笔记-主从复制

    主从复制 在Redis中 用户可以通过执行SLAVEOF命令或者设置slaveof选项 让一个服务器去复制 replicate 另一个服务器 我们称呼被复制的服务器为主服务器 master 而对主服务器进行复制的服务器则被称为从服务器 sl
  • git使用X篇_2_Git全套教程IDEA版(git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容)

    本文是根据以下视频及网上总结进行更新后的介绍git使用的博文 包含了git GitHub Gitee码云 搭建公司内部GitLab 与IDEA集成等内容 笔记来源 尚硅谷 5h打通Git全套教程IDEA版 涵盖GitHub Gitee码云
  • 初识docker之如何运行一个容器

    手把手运行一个镜像 1 容器的特点2 启动容器的参数3 docker run d it name test p 900 8080 v opt usr local 78b258e36eed d 后台执行容器 it 保持stdin和为容器创建t
  • 一文搞懂Redis架构演化之路

    你好 我是 Kaito 这篇文章我想和你聊一聊 Redis 的架构演化之路 现如今 Redis 变得越来越流行 几乎在很多项目中都要被用到 不知道你在使用 Redis 时 有没有思考过 Redis 到底是如何稳定 高性能地提供服务的 我使用
  • Java Stream流处理Map 详细用法

    文章目录 Java Stream流处理Map 详细用法 实体类 Stream方法 Java Stream流处理Map 详细用法 实体类 package com jzj model 当前描述 author jiazijie since 202
  • Code First Migrations更新数据库结构的具体步骤

    Code First Migrations更新数据库结构的具体步骤 作者 寒羽枫 cityhunter172 http blog csdn net cityhunter172 article details 8062420 我对 CodeF
  • Kaldi声学模型训练

    我的书 淘宝购买链接 当当购买链接 京东购买链接 支持标准的基于ML训练的模型 线性变换 如LDA HLDA MLLT STC 基于fMLLR MLLR的说话人自适应 支持混合系统 支持SGMMs 基于fMLLR的说话人识别 模型代码 可以
  • MAC 设计师必备的设计绘图软件 推荐与下载

    Mac设计师必备的设计绘图软件 为广大设计师推荐一些Mac上实用且强大的软件 使用好的软件 事半功倍 设计出精美的作品 Mac上优秀的设计类软件非常多 绝对不止这几款软件 看看以下内容 希望对你有帮助 如有更好的设计类软件大家也可以留言推荐
  • 放弃大厂高薪的程序员,涌进体制内

    本文转载自 InfoQ 作者 罗燕珊 我现在最庆幸的是 下班终于能看到太阳了 2020 年 8 月 20 日下午 5 点半 何双准备下班 他特地朝窗外拍了张照片并发在朋友圈 配图文案仅仅只有 太阳 92 年出生的何双原先是一名程序员 去年年
  • 数据统计(基于文件输入输出)

    输入一些整数 求出它们的最大值 最小值 平均值 保留三位小数 输入保证这些数都是不超过1000的整数 样例输入 2 8 3 5 1 7 3 6 样例输出 1 8 4 375 基于文件重定向 define LOCAL 作用 仅在本机使用重定向
  • 小程序报错:{“errMsg”:“navigateTo:fail can not navigateTo a tabbar page”}

    小程序报错 errMsg navigateTo fail can not navigateTo a tabbar page 错误显示 VM791 1 Error MiniProgramError errMsg navigateTo fail
  • 验证码报错 java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java: 问题解决

    验证码报错 org springframework web util NestedServletException Handler dispatch failed nested exception is java lang Internal
  • 【C语言】选择排序

    一 算法描述 在一遍遍历中将最小的数排到前面 几次遍历后前面就是排号序的 经过n 1次遍历 二 选择排序代码 void select int a int n int i j min temp for i 0 i
  • 矩阵和向量的乘法顺序

    矩阵和向量的乘法顺序 似乎经常有人被这个问题转晕 向量有两种表达形式 行向量和列向量 对应的矩阵也有行矩阵和列矩阵 采用哪种形式和左右手系无关 行矩阵 三个轴向量为前三行 最后一行为位移变换 连乘时从左到右接合 左边的变换先应用 变换向量时
  • Ubuntu 18.02编译opencv

    https blog csdn net public669 article details 99044895 spm 1001 2014 3001 5506 https blog csdn net Mr robot strange arti
  • 利用STM32CubeMX软件生成USB_HOST读写U盘

    一 测试平台 MCU STM32F429IGT6 工具 STM32CubeMX软件 编译软件 MDK 二 配置步骤 1 打开STM32CubeMX软件 创建新的工程文件 点击ACCESS TO MCU SELECTOR选项 2 选择芯片型号