图解 STM32 USB CDC虚拟串口 的实现

简单说,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 最小开发板

现在开始

相关推荐
Zw-awa12 小时前
协议是人为约定:同一个字节能有三种意思
stm32
国科安芯17 小时前
83 倍:ASC0108S 在推挽和开漏之间,差的不是速度,是回程
单片机·嵌入式硬件·架构·电平转换·抗辐射
国科安芯20 小时前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
rhythm-ring21 小时前
《汽车热管理系统:电子水泵单线PWM双向诊断机制》
单片机·嵌入式硬件·汽车
Dev_XH1 天前
【成品设计】基于物联网的车间安全生产监控系统设计
stm32·单片机·嵌入式硬件·物联网
xiebs_1 天前
【无标题】111
单片机
元器件BOM超人1 天前
GD32E230C8T6 兆易创新Cortex-M23超值型MCU解析:规格参数、替代选型与常见问题
单片机·嵌入式硬件
LONGZHIQIN1 天前
STM32学习笔记
笔记·stm32·学习·arm
StarsGreen1 天前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
en.en..1 天前
AFE:模拟前端,模拟世界通往 MCU 的信号桥梁
单片机·嵌入式硬件