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

现在开始

相关推荐
xyz_CDragon7 分钟前
OpenAI发布首款自研芯片Jalapeño:9个月流片,AI设计芯片的时代来了
人工智能·单片机·深度学习·神经网络·芯片设计
小心亦新1 小时前
STM32学习10---串口
stm32·嵌入式硬件·学习
wuyk5552 小时前
25. 函数指针表:用查表替代 switch-case,打造高效可维护的嵌入式状态机
c语言·stm32·单片机·mcu·51单片机
灯厂码农2 小时前
STM32三大通信协议详解——UART、I2C、SPI
stm32·单片机·嵌入式硬件
来生硬件工程师2 小时前
【硬件笔记】DCDC电源设计—BUCK电路设计要点
笔记·单片机·嵌入式硬件·硬件工程·智能硬件
zhangzhangkeji2 小时前
单片机 C51
单片机
逐步前行3 小时前
HAL_IIC (EEPROM)
stm32·单片机
国科安芯11 小时前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v
JNX_SEMI13 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
电子工程师成长日记-C5114 小时前
51单片机智能灯光控制系统
单片机·嵌入式硬件·51单片机