stm32 USB VPC虚拟串口简介
很多stm32的开发版都带有一个usb接口,可以用cubeMx将其配置成一个虚拟串口,使用USB线就可以打印调试信息,省去了用TTL转USB的步骤,而且USB虚拟串口的速度和稳定性比TTL转USB要好,在开发中,这个工具可以帮助我们节省一个串口,同时获得更稳定的传输。
STM32F103C8T6_Black_Pill-1最小系统开发板
这个开发板性价比可谓是高到天际了,淘宝上遍地都是,它的led灯是接在PB12上的 ,我推荐这个板子作为实验用,它还有一个专门的网站,STM32F103C8T6-Black-Pill
它也是stm32duino项目的官方支持的板子,最近也在捣鼓STM32duino 的项目,查了很多资料,现在可以使用基本arduino库函数了,但是想开定时器什么的还是很麻烦,等有空了再写一个关于stm32duino 的专题,好好介绍一下,现在开始正题。

STM32F103C8T6_Black_Pill-1
使用cubemx配置 生成Keil工程
选择mcu的过程就不再赘述,直接开始配置
DEBUG选择 SW模式

sys
HSE高速总线始终改为外部晶振

rcc
开USB --DEVICE(FS)

usb
选择 Communication Device Class(Virtual Port Com) 参数默认

usbdevice
时钟树配置

时钟树
工程配置 IDE选择 MDK V5 。Stack Size 网上有人说要改大为0x1000,不然会出现设备无法识别黄色感叹号的问题,测试了不改也行,如果之后出现了这种情况可以将这里改大试试

project
第一栏里选择复制必要的库文件 第二栏里勾选将文件分为.c和.h

code_gen
最后点击生成文件
注意 !
工程路径绝对不能有中文名,否则会报错,无法复制stm32的库文件到你的工程
安装STM32虚拟串口驱动
官网下载 next安装 STM32 Virtual COM Port Driver
keil中下载工程 测试串口
生成好的文件如下

keil_文件树
在main.c 中添加这几行代码测试usb是否能正常通信 ,编译,下载到单片机上 复位

添加语句
将micro usb线插到电脑上 此时应该能够在设备管理器中看到串口

串口安装好了的图
打开串口调试助手 可以看到有数据发过来 至此USB虚拟串口就配置好了

串口
关键字:STM32CUBEMX F103 USB虚拟串口
引用地址:
STM32CUBEMX F103 HAL库开发之 USB虚拟串口
推荐阅读最新更新时间:2026-03-20 13:14
STM32CubeMX学习笔记(43)——USB接口使用(CDC虚拟串口)
一、USB简介 USB(Universal Serial BUS)通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。 USB 发展到现在已经有 USB1.0/1.1/2.0/3.0 等多个版本。目前用的最多的就是 USB1.1 和 USB2.0,USB3.0 目前已经开始普及。STM32F103 自带的 USB 符合 USB2.0 规范,不过 STM32F103 的 USB 都只能用来做设备,而不能用作主机。 标准 USB 共四根线组成,除
[单片机]
怎样设置上位机与PLC之间的虚拟串口 上位机如何通过USB口和PLC通信
怎样设置上位机与PLC之间的虚拟串口? 要设置上位机与 PLC 之间的虚拟串口,一般需要借助虚拟串口驱动程序。以下是一般的设置步骤: 1. 下载并安装虚拟串口驱动程序。市面上有很多虚拟串口驱动程序,例如虚拟串口伴侣、Eltima 虚拟串口、VSPE 等等。根据实际需要,选择一个合适的虚拟串口驱动程序,下载并安装。 2. 打开虚拟串口驱动程序。在虚拟串口驱动程序中,需要配置两个虚拟串口,一个作为上位机串口,一个作为 PLC 串口。需要设置正确的串口号、波特率等参数,并确保虚拟串口的工作状态为“已启用”。 3. 配置上位机串口。在上位机中,打开串口调试工具或者使用编程语言编写代码,根据虚拟串口驱动程序的配置信息,设置正确的上位机串
[嵌入式]
【GD32F303红枫派开发板使用手册】第二十讲八 USB-虚拟串口实验
28.USB-虚拟串口实验 28.1实验内容 通过本实验主要学习以下内容: CDC虚拟串口协议原理及使用 CDC虚拟串口通信操作 28.2实验原理 USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备使用的USB子类。该设备类采用批量传输。 本例程中实现了CDC设备类的相关请求,包括SET_LINE_CODING、GET_LINE_CODING、SET_CONTROL_LINE_STATE等。后续将会在代码解析章节进行介绍。 有关CDC协议可以通过以下USB官网下载或者通过红枫派开发板配套资料获取。 大家可以在学习的过程中结合历程代
[单片机]
STM32虚拟串口usb_printf函数及接收函数
环境:STM32CubeMX STM32F429IGT6 STlink 首先要确保硬件电路USB部分没问题;USB相关的概念知识大概需要了解一下,网上挺多这类文章的,自行百度。 点击USB_OTG_FS,模式选择Device_Only,其他保持默认。 点击USB_DEVICE,选择IP 为VPC(虚拟串口),其他保持默认。 我使用的芯片是F429IGT6,最大时钟180MHz,但是USB时钟必须为48MHz(详情看STM32中文参考手册930页),180MHz是分频不出来48MHz的USB时钟,所以把系统配置成168MHz就能分频出48MHz的USB时钟。 堆空间需要改大一点,不然在USB插入电脑的时候,
[单片机]
STM32 USB虚拟串口调试总结
官方代码移植有修改请参考以下链接,我们只针对其不足做补充说明。 1、参考链接: STM32虚拟串口移植(提供了可用的源码,需要简单修改):https://www.cnblogs.com/hiker-blogs/p/stm32_usb.html 官网虚拟串口里程移植,虚拟串口用到的文件介绍:https://blog.csdn.net/sz189981/article/details/65948071 USB较为详细的介绍、以及虚拟串口移植:https://blog.csdn.net/rannar/article/details/81589472 配置内部时钟方式:https://blog.csdn.net/qhw52
[单片机]
STM32 USB虚拟串口
串口调试在项目中被使用越来越多,串口资源的紧缺也变的尤为突出。很多本本人群,更是深有体会,不准备一个USB转串口工具就没办法进行开发。本章节来简单概述STM32低端芯片上的USB虚拟串口的移植。在官方DEMO中已经提供了现成的程序,这里对修改方法做简单说明。 首先打开官方demo我们开始进行移植,第一步复制我们可用的文件,操作如下: Projects\Virtual_COM_Port文件夹下,复制红线部分 图1 图2 我为了方便演示统放在usb/src文件夹下: 图3 现在复制USB的库文件,这些文件不需要我们修改: 图4 上图中的文件统一放在usb/lib文件夹下: 图5 好了现在所需要的文件我们以复制完
[单片机]
嵌入式系统的USB虚拟串口设计
引 言: 现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中。但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失。于是嵌入式开发人员常常发现自己新买来的计算机上没有串口,或者出现调试现场用户的计算机没有串口的尴尬局面。相反,现在的个人计算机普遍拥有4个以上的USB接口,能不能使用USB接口代替串口,完成PC机和嵌入式系统的通信呢? 1、 USB虚拟串口代替物理串口的可行性 首先,越来越多带USB接口的器件涌现出来,如带USB接口的单片机,或独立的USB接口器件,而且这些器件的成本已经很接近于使用RS232电平转换芯片所带来的成本。 ?
[嵌入式]
STM32F407VET6开发板移植基于HAL库的正点原子LCD屏幕驱动
up的开发板长这个样子: 比较便宜XD 屏幕的话是2.8寸带触摸的TFT LCD屏幕,驱动是ILI9341。 首先,在CubeMX中创建初始化配置文件需要配置的选项如下图, (LED0,LED1与Key1,2,3,4与LCD驱动无关): 需要对RCC,SYS的固定配置以及时钟树的改动此处不作介绍。可看最后的参考文章链接。 首先配置LCD_BL,即背光控制相关的GPIO。管脚脚位选择需要看开发板的原理图。我的原理图是这样的: 可以看到需要将PB1配置为LCD_BL。 具体配置如下图: 之后配置FSMC: 此处LCD Register Select信号也需要看你的开发板原理图。我的是这样的: 可以
[单片机]