Spring Boot 对 Nacos 配置中心的快速使用
2026/10/4 5:02:37
struct USB_SETUP_REQ { 2 uint8_t bmRequestType; // 方向 + 类型 + 接收者 3 uint8_t bRequest; // 请求编号(如 0x03 = SET_FEATURE) 4 uint16_t wValue; 5 uint16_t wIndex; 6 uint16_t wLength; 7};USB_SETUP_REQ在 USB 流程中的完整应用流程GET_DESCRIPTOR| 字节 | 值 | 含义 |
|---|---|---|
| 0x00 | 0x80 | bmRequestType: IN, Standard, Device |
| 0x01 | 0x06 | bRequest: GET_DESCRIPTOR |
| 0x02 | 0x00 | wValue(LSB): Descriptor Index = 0 |
| 0x03 | 0x01 | wValue(MSB): Descriptor Type = Device |
| 0x04 | 0x00 | wIndex(LSB): Interface = 0 |
| 0x05 | 0x00 | wIndex(MSB): 接口号=0 |
| 0x06 | 0x00 | wLength(LSB): 数据长度 = 18 字节 |
| 0x07 | 0x12 | wLength(MSB): 18 字节 |
设备固件收到这 8 字节后,将其存入USB_SETUP_REQ结构体:
USB_SETUP_REQ req; req.bmRequestType = 0x80; // IN, Standard, Device req.bRequest = 0x06; // GET_DESCRIPTOR req.wValue = 0x0100; // Type=Device, Index=0 req.wIndex = 0x0000; req.wLength = 0x0012; // 18 bytes然后判断:
Standard Request→ 由 USB 核心处理USBD_GetDescriptor()返回设备描述符→ 控制传输结束。
USB_SETUP_REQ的核心作用总结| 功能 | 说明 |
|---|---|
| ✅启动控制传输 | 每次控制传输都从 SETUP 包开始 |
| ✅传递命令和参数 | bRequest是命令,wValue/wIndex是参数 |
| ✅决定后续行为 | bmRequestType决定是标准/类/厂商请求 |
| ✅指定数据方向和长度 | wLength告诉设备要传多少数据 |
| ✅枚举的关键工具 | 主机通过它获取描述符、设置地址、配置设备 |
USB_SETUP_REQ的典型应用场景(表格)| 场景 | SETUP 包内容 | 用途 |
|---|---|---|
| 获取设备描述符 | bmRequestType=0x80,bRequest=0x06,wValue=0x0100 | 主机了解设备基本信息 |
| 设置设备地址 | bmRequestType=0x00,bRequest=0x05,wValue=0x000A | 给设备分配唯一地址(如 0x0A) |
| 设置配置 | bmRequestType=0x00,bRequest=0x09,wValue=0x0001 | 让设备进入工作状态 |
| 清除端点 Stall | bmRequestType=0x02,bRequest=0x01,wIndex=0x0083 | 恢复端点正常通信 |
| CDC 设置波特率 | bmRequestType=0x21,bRequest=0x20,wLength=0x0007 | 配置串口参数 |
USB_SETUP_REQ的完整生命周期USB_SETUP_REQ