STM32
直播中

杨秀英

7年用户 1378经验值
私信 关注
[问答]

请问stm32如何使用虚拟串口VPC打印信息?

请问STM32如何使用虚拟串口VPC打印信息?

回帖(1)

文甘翀

2021-12-7 09:32:55
在调试单片机程序的时候,常常需要用到串口向上位机打印信息,但是串口几乎已经在个人计算机上绝迹了,只好外接一个USB转串口模块,并不是很方便。ST官方提供的程序在单片机内部通过CDC实现了虚拟串口的功能,通常windows系统都带有支持CDC类设备的驱动,无需安装驱动就能自动识别设备。STM32全系提供了虚拟串口功能(VPC),可以替代串口完成与上位机的通信功能,唯一的缺点就是不能ISP。
不了解USB协议没关系,CUBEMX已经帮我们打包好了:
1、打开USB内部Phy,选择设备模式,FS、HS都是一样的:





2、启用VPC协议,所有参数都用默认的:




3、配置时钟,USB时钟源固定48MHz,貌似自动配置时钟外设的最高频率只能到168MHz:





4、堆栈调大一些,太小程序会运行不正常:





5、在main.c里添加u***d_cdc_if.h引用、调用发送函数:





6、软件里打开相应串口,就能收到消息了:





单片机与PC的通信是用的USB协议,PC会把收到的包解析出数据,并放在串口的缓冲里,软件再读取显示出来。因为串口参数是用来控制串口硬件的,而VPC并不是用的串口通信,所以这些参数是不起作用的,随便填写都可以。
-------------------------------下面是我的小广告----------------------------------------------


举报

更多回帖

发帖
×
20
完善资料,
赚取积分