本帖最后由 南来之风 于 2024-9-19 21:34 编辑
CDC类是USB2.0标准下的一个子类,定义了通信相关设备的抽象集合。它与USB2.0标准的关系如下:

在STM32cubeide里面可以方便快捷的开发一个USB CDC应用。这里使用的是USB1 HS.

电路原理图如下:

详细的配置:


点击保存,自动生成代码。查看usbd_desc.c可以看到相关的CDC设备信息:
/** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines
* [url=home.php?mod=space&uid=247401]@brief[/url] Private defines.
* @{
*/
#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"
#define USB_SIZ_BOS_DESC 0x0C
主函数中添加简单的串口输出代码,查看效果。
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
static uint8_t cnt;
sprintf((char *) strVcom, "%s %3d", "\r\n Hello ST! 2024/09/19", cnt++);
CDC_Transmit_HS(strVcom, sizeof(strVcom));
HAL_Delay(1000);
}
下面展示USB插入电脑后:
|