概要

硬件:STM32F103C8最小系统板。
目的:熟悉STM32CubeMX软件进行USB CDC虚拟串口的配置。
依赖:【STM32F103C8】GPIO点亮LED灯

硬件

原理图

在这里插入图片描述

软件

打开MX工程

【STM32F103C8】GPIO点亮LED灯中,双击打开stm32f103c8.ioc工程,已经配置好了LED和SWD固件烧录。
在这里插入图片描述

配置USB外设

启用USB Device (FS),其他保持默认。
在这里插入图片描述

启用USB CDC

找到USB_DEVICE,选择Communication Device Class (Virtual Port Com),其他保持默认。
在这里插入图片描述

打开HSE

需要用到外部高速时钟,否则时钟树配置中USB时钟将达不到48MHz。
在这里插入图片描述

配置时钟树

点击Clock Configuration,同意自动配置时钟树。
在这里插入图片描述

生成代码

点击右上角GENERATE CODE生成代码。

添加应用程序

main.c中添加头文件和周期打印,usbd_cdc_if.c中添加回显。

/* USER CODE BEGIN Includes */
#include "usbd_cdc_if.h"
/* USER CODE END Includes */
// ...............分界线..............
  /* USER CODE BEGIN WHILE */
  uint8_t str[] = "Hello, World!\r\n";
  while (1)
  {
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    CDC_Transmit_FS(str, strlen((char*)str));
    HAL_Delay(5000);
    /* USER CODE END WHILE */
// ...............分界线..............
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 6 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  CDC_Transmit_FS(Buf,*Len);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  return (USBD_OK);
  /* USER CODE END 6 */
}

注意事项

编译下载固件后,将烧录器和USB拔掉使芯片下电,仅接上USB连接电脑。设备管理器会多一个串口,使用上位机串口工具,任意波特率等配置方式发数据,串口工具将回显发送的数据。
在这里插入图片描述

附件代码

stm32f103c8-cdc-20260701.7z

参考文献

[1] STM32F103C8T6的USB—CDC虚拟端口组件(HAL)_stm32f103c8t6 usb hal-CSDN博客
[2] STM32USB虚拟串口通讯 - 电子发烧友网

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐