USB-CDC虚拟串口实现printf功能

本篇文章介绍如何使用CH32来实现USB虚拟串口打印功能,代替传统中的串口打印。

相比传统串口优势点:

 1,速度快,一包大概也就几十us,而传统的大概要用到几ms。

 2,节省了一个USB转串口芯片的成本。

 3,在没有USB转串口工具的情况下,可以很方便调试。

下面就介绍怎么配置

USB-FS口

一,在USB-FS-CDC例程的基础上debug.c中添加头文件

 二,屏蔽掉原先的重定向函数,并添加需要初始化的部分:

 三,CDC串口的重定向

判断用while的话一包都不会丢,但当串口调试助手关闭时会导致程序卡住,只是调试用可直接用if,加一个1ms延时,现在就可以测试打印功能了

 但是测试发现在传输过程中关闭串口调试助手再打开时总会提示打不开串口,不在传数据的话则没这个问题,抓包发现上位机发命令时端点三还有数据,可能是此导致上位机误以为串口繁忙。

我采取的方法是在setup中断中将负责发送的端点3给关闭,然后在定时器中断中打开即可。100us就够了。

这样就可以实现了(波特率不用设定,速度取决于主机IN包速率)

 总结:目前只适合做一些调试来使用,实际使用还需要做具体修改。

另外USBD这里就不单独拿出来说明了,想要的可以评论留个邮箱。

 

posted @ 2023-09-14 14:19  WCH_CH32  阅读(1188)  评论(2编辑  收藏  举报