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

简单说,CDC虚拟串口 就是通过usb实现的串口通讯

本文使用 STN32F103C8T6 单片机,找了许多介绍都不错,由于不喜欢看枯燥的文字,所以把这个过程用图片的形式展示出来,适合小白,高手勿喷

增加的程序代码借鉴https://blog.csdn.net/qq2745567641/article/details/149344792

usbd_cdc_if.cCDC_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 最小开发板

现在开始

相关推荐
Zyed38 分钟前
[STM32]Day14独立看门狗+窗口看门狗
stm32·单片机·嵌入式硬件
H__Rick1 小时前
C51学习-DAY7
单片机·嵌入式硬件·学习·51单片机
欢乐熊嵌入式编程1 小时前
第2讲:什么是优秀的软件架构?
stm32·单片机·freertos·低功耗蓝牙·嵌入式架构·efr32
嵌入式ZYXC1 小时前
第9篇:《面试题:ADC前端为什么要加运放跟随器?什么情况下可以不加?》
stm32·单片机·嵌入式硬件·面试·职场和发展
DS小龙哥1 小时前
基于STM32设计的电动车智能充电计费系统
stm32·单片机·嵌入式硬件
普中科技2 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 49 章 FLASH 字库实验
stm32·单片机·嵌入式硬件·flash·gbk·字库·普中科技
kyle~2 小时前
机器人日志系统
c++·单片机·嵌入式硬件·机器人·ros2
踏着七彩祥云的小丑2 小时前
嵌入式测试学习第 34 天:常见bug类型:死机、重启、数据错乱、通信丢包
单片机·嵌入式硬件·学习
一个嵌入式学徒2 小时前
STM32+ESP8266 接入机智云平台完整步
stm32·单片机·嵌入式硬件
SUNNYSPY0012 小时前
AO3400-ASEMI通用MOS管AI服务器专用
单片机