2014 5 DocID025799 Rev 1 1/44
UM1720
用户手册
STM32Cube™ USB 主机库
前言
本文档描述 STM32Cube USB 主机库中间件模块。
众所周知,通用串行总线 USB是介于作为主机的个人计算机 PC与所连接的 USB
设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌
入式消费终端与工业设备作为主机已越来越普而嵌入式主机功能有限仅支持特定的
USB (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。
本文档详细描述了 STM32Cube USB 主机库,即在 STM32CubeF2 STM32CubeF4
件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种
USB 类的 USB 外设进行通信 MSC HID CDC、音频和 MTP)。
STM32Cube 软件包是一款免费解决方案,可以从意法半导体网站下载:
http://www.st.com/stm32cube
www.st.com
目录 UM1720
2/44 DocID025799 Rev 1
目录
1 STM32Cube™ 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3USB主机库架构与文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 USB 主机库架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 USB 主机库文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 USB 主机内核文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 USB 主机类文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 主机库内核模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1 内核功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
4.2 内核 API,用户回调与数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
4.2.1 应用的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.2 内核用户回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.3 类处理程序的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.4 主要的主机内核数据结构体与枚举类型定 . . . . . . . . . . . . . . . . . . . . . 13
4.3 内核状态机概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 具备底层驱动的内核接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5USB主机库类模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1 类实现模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2 USB 大容量存储类 MSC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.1 MSC 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.2 MSC 类相关控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.3 MSC 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.4 MSC 类专用 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2.5 MSC 类的典型使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.3 USB HID 鼠标与键盘类 HID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3.1 HID 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.2 HID 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.3 HID 类过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3.4 HID 专用 API 与事件回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3.5 HID 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29