在使用 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 協議傳輸給主機。