利用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盘 的相关文章

  • 处理器指令周期执行时间

    我的猜测是 no operation 内在 ARM 指令应花费 1 168 MHz 来执行 前提是每个NOP在一个时钟周期内执行 我想通过文档验证这一点 有关处理器指令周期执行时间的信息是否有标准位置 我试图确定 STM32f407IGh6
  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

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

    先吐槽一下 rt thread studio出现BUG真多 好多时间都是在找BUG 但里面用好多控件还是挺好用的 真是又爱又恨 所以一般使用功能不多的话还是用keil多一点 创建5 02版本工程之后直接进行编译 直接会报下面这个错误 资源
  • rt-thread studio中新建5.0不能用

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

    我正在为我的 STM32F3 Discovery 板使用 C 进行开发 并使用 std deque 作为队列 在尝试调试我的代码 直接在带有 ST link 的设备上或在模拟器中 后 代码最终在 main 中输入我的代码之前在断点处停止 然
  • STM32F4 通过软复位跳转到引导加载程序,无需 BOOT0 和 BOOT1 引脚

    我问这个问题是因为可以在这里找到类似问题的答案 通过应用程序跳转到 STM32 中的引导加载程序 即从用户闪存在引导模式下使用引导 0 和引导 1 引脚 用户 JF002 JF002回答 当我想跳转到引导加载程序时 我在其中一个备份寄存器中
  • STM32F103

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

    我试图理解另一位程序员编写的代码 它使用了I C http en wikipedia org wiki I C2 B2C通信以将数据写入 STM32 微控制器的 EEPROM 一般来说 我理解他的代码是如何工作的 但我不明白他为什么使用HA
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • STM32的HAL中实现单按、长按和双按功能

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

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

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

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL

随机推荐

  • 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 选择芯片型号