STM32 USB协议栈源码分析

STM32 USB协议栈源码分析

作者 将狼才鲸
日期 2025-12-10

复制代码
USB硬件寄存器读写,并提供供USB协议栈操作的API接口:
	STM32 USB硬件模块,STM32Cube_FW_F7_V1.17.0_01\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_usb.c
			core复位、高速PHY初始化、core初始化、设置设备速度、激活端点、端点开始传输、读写包、挂起、
			停止设备、设备连接、断开连接、读中断、清中断、激活令牌、复位端口、获取速度、获取当前帧、
			数据块切换、停止host、激活远端唤醒等;
	ue11 USB硬件模块:嵌入式:[mirrors_ultraembedded/cores](https://gitee.com/mirrors_ultraembedded/cores)
			初始化、复位、hub复位、hub设备检测、hub全速设备、hub使能、传输OUT包、传输IN包、定时器延时、当前时间、时间差;
			控制器初始化、复位设备、配置设备、枚举、找端点、清除挂起状态、发送读控制、发送写控制、批量传输写、
			批量传输读、等时传输;
	ue11 USB硬件模块:Linux:[mirrors_ultraembedded/cores](https://gitee.com/mirrors_ultraembedded/cores)
			开始、停止、CTRL(清除hub特性、设置hub特性、清除端点特性(端口使能、端口挂起、端口上电、端口复位)、hub描述符、
			hub状态、端口状态、端口特性(挂起、上电、复位))、设备检测定时器回调、hub描述符、hub状态、获取帧、
			失能端点、urb_dequeue、urb_enqueue、balance、中断处理、发送处理结果、完成请求、开始传输、开启中断、关闭中断、
			OUT包、IN包、状态包、令牌包、端口电源、hub使能、hub复位
STM32 USB协议栈:
	分为硬件HAL库、USB设备库、USB主机库、文件系统库;
	STM32Cube_FW_F7_V1.17.0\Middlewares\ST\STM32_USB_Host_Library\Core\Inc/Src  主机端USB协议栈核心代码
		usbh_conf_template.h  公用接口:打印输出级别控制、内存操作、默认配置(缓存大小、端点数等)。
			只是一个示例模板,最终以Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk Keil工程里的usbh_conf.c为准!
		usbh_core.h  包含core文件夹里其它文件;应用层协议,协议栈主API:初始化、销毁、注册类、选择接口、
			寻找接口、获取激活的类、找到接口索引、判断端口使能、开始、停止、轮询、重新枚举;
			硬件寄存器相关API:初始化、销毁、开始、停止、连接、断开、获取速度类型、复位端口、获取下一个传输尺寸、
			驱动VBUS、打开管道、关闭管道、提交URB USB请求块、获取USB请求块状态、通知USB请求块改变、设置数据切换、
			获取数据切换、端口失能、端口使能、设置定时器、增加定时器、延时
		usbh_ctlreq.h  控制传输中的枚举、配置与控制:设备识别、配置、HID设备的报告请求、通用命令;
			控制请求,获取描述符,获取设备描述,获取字符串描述,设置配置,获取配置描述符,设置地址,
			设置接口,激活设备特定功能,控制设备特定功能,获取下个描述符
		usbh_def.h  基础宏操作:真假最大最小等;USB协议栈结构体与命令值;
		usbh_ioreq.h  功能:控制传输(发送令牌包,收发包)、批量传输(收发包)、中断传输(收发包)、等时传输(收发包)
		usbh_pipes.h  打开关闭申请释放管道;管道是USB主机与设备端点之间进行数据传输的逻辑通道模型。‌
	STM32Cube_FW_F7_V1.17.0_01\Middlewares\ST\STM32_USB_Host_Library\Class\MSC\Inc/Src
		usbh_msc.h  如果是接入U盘设备,则使用此文件夹内文件;USB大容量存储设备准备好、获取逻辑盘数量、单元准备好、
			获取逻辑盘信息、读、写,命令值,协议结构体;
	STM32Cube_FW_F7_V1.17.0_01\Middlewares\Third_Party\FatFs\src\drivers
		usbh_diskio_template.h、usbh_diskio_dma_template.h  只是一个模板,会用到usbh_core.h、usbh_msc.h
			具体实现在STM32Cube_FW_F7_V1.17.0_01\Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk的Keil工程里面
	STM32Cube_FW_F7_V1.17.0\Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk\Inc/Src  主机端USB协议栈USB模块硬件寄存器相关代码
		usbh_conf.h  公用接口:打印输出级别控制、内存操作、默认配置(缓存大小、端点数等);会被USB协议栈core里面调用
		usbh_diskio.h  让文件系统包含USB协议栈的头文件,注册文件系统中初始化、获取状态、读、写、ioctl的操作
		main.c  通过USB协议栈USBH_MSC_xx接口实现供文件系统使用的读写控制等接口,并注册进文件系统,
			调用USB协议栈接口初始化USB硬件,注册设备插拔时的回调函数,注册设备类型,开始运行,等待设备连接,
			连接成功后主动进行U盘读写操作;
相关推荐
m0_555762904 小时前
STM32嵌入式软件设计的完整流程
stm32·单片机·嵌入式硬件
BT-BOX4 小时前
【普中】基于51单片机模拟风扇控制数码管显示设计
单片机·嵌入式硬件·51单片机
国科安芯4 小时前
商业航天级抗辐照MCU与电源芯片在硅微条探测器系统中的应用分析
单片机·嵌入式硬件·架构·安全威胁分析·安全性测试
TEC_INO4 小时前
Stm32_1
stm32·单片机·嵌入式硬件
Molesidy13 小时前
【Embedded Development】【bootloader】基于MCU的bootloader详细介绍以及基于MCU串口的IAP实战详细教程
单片机·嵌入式硬件·bootloader
沐欣工作室_lvyiyi15 小时前
基于单片机的两轮自平衡循迹小车(论文+源码)
单片机·嵌入式硬件·小车·两轮自平衡
清风66666615 小时前
基于单片机的8路抢答器设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
点灯小铭15 小时前
基于单片机的智能污水有害气体电子鼻检测系统
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
SystickInt18 小时前
32 DMA实现ROM与RAM通信
stm32·单片机·嵌入式硬件