简单说,CDC虚拟串口 就是通过usb实现的串口通讯
本文使用 STN32F103C8T6 单片机,找了许多介绍都不错,由于不喜欢看枯燥的文字,所以把这个过程用图片的形式展示出来,适合小白,高手勿喷
增加的程序代码借鉴https://blog.csdn.net/qq2745567641/article/details/149344792
在usbd_cdc_if.c的CDC_Receive_FS中添加回传逻辑:
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* 回传收到的数据 */
CDC_Transmit_FS(Buf, *Len);
/* 重新使能接收 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
return (USBD_OK);
}
在main.c的主循环中添加周期性发送逻辑
//在mian.c 的前面加 #include "usbd_cdc_if.h"
#include "usbd_cdc_if.h" //加这个 CDC_Transmit_FS 就不会出波浪线
//程序其他代码
...................
/* 测试字符串 */
uint8_t test_buf[] = "Hello, CDC Virtual COM!\r\n";
uint32_t send_cnt = 0;
while (1)
{
/* 每1秒发送一次测试数据 */
if(send_cnt % 1000 == 0)
{
CDC_Transmit_FS(test_buf, sizeof(test_buf)-1);
}
HAL_Delay(1);
send_cnt++;
}
就改这结果地方,编译烧录就可以看到UART的串口通讯的效果
使用软件
STN32CubeMx V6.9以上
Keil uVision5 v5.37.0.0
烧录器 ST-LINKV2
STM32F103C8T6 最小开发板
现在开始


















