当前位置: 首页 > ops >正文

USB学习【11】STM32 USB初始化过程详解

1.USB HAL库里面的结构体

为了管理USB,HAL首先构建了一下几个结构体
1.1 USBD设备结构体
USB用到的全局变量,保存了USB生命周期的全部信息。
在这里插入图片描述
1.2 USBD PCD底层硬件操作相关结构体
在这里插入图片描述
1.3 USB 配置结构体
USB速度、PHY接口类型、端点0参数等
在这里插入图片描述
1.4 端点配置结构体
每个端点(ep_in/ep_out)都有自己的配置,类型为USB_EPTypeDef,
在这里插入图片描述

1.4 几大结构体相互关系
在这里插入图片描述

2.USB HAL初始化

下面是初始化的函数调用路线图:
在这里插入图片描述
这里我们真正需要关注的点是,分组缓冲区描述表的设置,其他的都是必须得通用操纵。
这一步做的工作还是结构体的必要信息出初始化,把分组缓冲区描述表的设置根据需要写好。

初始化完成后,所有的结构体数据变成了这样,颜色对应的在相应的颜色的函数进行的修改。

在这里插入图片描述
在这里插入图片描述
这里注意,初始化的大部分工作都是结构体信息的填充,一些端口底层寄存器并没有操作。
详细的内容下一篇讲解。

http://www.xdnf.cn/news/7002.html

相关文章:

  • 【AI】Ubuntu 22.04 4060Ti16G 基于SWIFT框架的LoRA微调 模型Qwen3-1.8B 数据集弱智吧 微调笔记
  • 【iOS】探索消息流程
  • 上位机知识篇---流式Web服务器模式的实现
  • STM32SPI通信基础及CubeMX配置
  • OVS练习笔记20250518
  • Kubernetes控制平面组件:Kubelet详解(五):切换docker运行时为containerd
  • Vue-监听属性
  • 报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)”
  • 面试中的线程题
  • 数据结构:二叉树一文详解
  • Linux安全第三章-系统安全及应用
  • 深入浅出Hadoop:大数据时代的“瑞士军刀”
  • 面向GIS的Android studio移动开发(二)--在地图上绘制电子围栏
  • Linux(2)——shell原理及Linux中的权限
  • 黑灰产业链深度解析
  • 最新缺陷检测模型:EPSC-YOLO(YOLOV9改进)
  • 使用 C# 入门深度学习:线性代数详细讲解
  • Android 性能优化入门(一)—— 数据结构优化
  • MLLM常见概念通俗解析(三)
  • Java面试深度解析:微服务与云原生技术应用场景详解
  • 互联网大厂Java面试:从Spring到微服务的深度探讨
  • 一种开源的高斯泼溅实现库——gsplat: An Open-Source Library for Gaussian Splatting
  • svn: E170013 和 svn: E120171 的问题
  • 二分算法的介绍简单易懂
  • 想要建站但没有服务器?雨云RCA,免服务器即可搭建完整网站!!!
  • 用golang实现二叉搜索树(BST)
  • (三)MMA(KeyCloak身份服务器/OutBox Pattern)
  • Serverless技术深度整合:从冷启动优化到边缘场景落地
  • 【Mini 型 http 服务器】—— int get_line(int sock, char *buf, int size);
  • spark数据的提取和保存