图解 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 最小开发板

现在开始

相关推荐
山木嵌入式10 分钟前
STM32串口不定长数据接收:超时解析法+DMA+空闲中断法(附完整代码)
stm32·单片机·串口·uart
yong999011 分钟前
STC15W4K32S4系列单片机驱动nRF24L01 2.4G无线接收方案
单片机·嵌入式硬件
崇山峻岭之间16 分钟前
单片机蜂鸣器实验
单片机·嵌入式硬件
西城微科方案开发24 分钟前
厨房电子秤MCU芯片解决方案
单片机·嵌入式硬件
深圳市晨芯阳科技有限公司24 分钟前
HC7253晨芯阳高端电流检测降压LED恒流驱动器
stm32·单片机·嵌入式硬件·驱动ic·深圳市晨芯阳科技有限公司
隔窗听雨眠37 分钟前
STM32/ESP32实战驱动的达林顿阵列高效复用指南
stm32·单片机·嵌入式硬件
XiYang-DING38 分钟前
【Java EE】TCP(Transmission Control Protocol)
单片机·tcp/ip·java-ee
bubiyoushang8881 小时前
STM32L051 的 串口升级
stm32·单片机·嵌入式硬件
210Brian1 小时前
蓝桥杯单片机学习笔记(十二):V2026 大模板构建(上)
单片机·学习·蓝桥杯
森利威尔电子-2 小时前
森利威尔 SL3037B 替换HT7463A/HT7463B 5.5-60V宽压 峰值 0.6A
单片机·嵌入式硬件·物联网·集成电路·芯片