在使用 STM32 USB 功能时 usbd_desc.c 文件中定义了一段宏,以下解每段宏的用途。
#define USBD_VID 1155
#define USBD_LANGID_STRING 1033
#define USBD_MANUFACTURER_STRING "STMicroelectronics"
#define USBD_PID 22336
#define USBD_PRODUCT_STRING "STM32 Virtual ComPort"
#define USBD_CONFIGURATION_STRING "CDC Config"
#define USBD_INTERFACE_STRING "CDC Interface"
这段代码是一系列宏定义,主要用于定义 USB 设备的描述信息。这些信息在 USB 设备与主机通信时,会被主机读取,从而识别设备的相关属性。下面对每个宏定义进行详细解释:
1. USBD_VID
#define USBD_VID 1155
- 含义:
USBD_VID
代表 USB 设备的厂商 ID(Vendor ID)。每个 USB 设备制造商都会从 USB Implementers Forum(USB-IF)处获得一个唯一的厂商 ID。这里1155
对应的是意法半导体(STMicroelectronics),表示该 USB 设备是由意法半导体制造的。
2. USBD_LANGID_STRING
#define USBD_LANGID_STRING 1033
- 含义:
USBD_LANGID_STRING
定义了设备描述字符串所使用的语言 ID。1033
表示英语(美国),意味着该 USB 设备的描述字符串(如制造商名称、产品名称等)使用的是英语(美国)语言。
3. USBD_MANUFACTURER_STRING
#define USBD_MANUFACTURER_STRING "STMicroelectronics"
- 含义:
USBD_MANUFACTURER_STRING
定义了设备制造商的名称。这里明确指出该 USB 设备的制造商是意法半导体。当主机查询设备信息时,会显示这个制造商名称。
4. USBD_PID
#define USBD_PID 22336
- 含义:
USBD_PID
代表 USB 设备的产品 ID(Product ID)。同一厂商的不同产品会有不同的产品 ID,用于区分不同型号的设备。22336
标识了该特定的 USB 产品。
5. USBD_PRODUCT_STRING
#define USBD_PRODUCT_STRING "STM32 Virtual ComPort"
- 含义:
USBD_PRODUCT_STRING
定义了设备的产品名称。这里表明该 USB 设备是 “STM32 Virtual ComPort 虚拟串口”,主机在识别设备时会显示这个产品名称,方便用户了解设备的功能。
6. USBD_CONFIGURATION_STRING
#define USBD_CONFIGURATION_STRING "CDC Config"
- 含义:
USBD_CONFIGURATION_STRING
定义了设备的配置名称。“CDC Config” 表示该设备采用了通信设备类(CDC,Communication Device Class)的配置,CDC 常用于实现虚拟串口等通信功能。
7. USBD_INTERFACE_STRING
#define USBD_INTERFACE_STRING "CDC Interface"
- 含义:
USBD_INTERFACE_STRING
定义了设备接口的名称。“CDC Interface” 表明该设备使用的是 CDC 接口,用于与主机进行通信。
这些宏定义为 USB 设备提供了必要的描述信息,使得主机能够正确识别和使用该 USB 设备。在实际的 USB 设备开发中,这些信息通常会被包含在 USB 设备描述符中,通过 USB 协议传输给主机。