这里记录一下用STM32Cumebx实现USB虚拟串口的过程,以F072为例大家可以一起学习讨论一下。

 

1.新建工程

  

STM32串口虚拟化 stm32 虚拟串口 接收_串口

 

 

 

STM32串口虚拟化 stm32 虚拟串口 接收_感叹号_02

 

  这里选择SW烧录调试,看个人习惯,如果不习惯用SW的你们可以换其他的也行。

 

STM32串口虚拟化 stm32 虚拟串口 接收_串口_03

 

 

STM32串口虚拟化 stm32 虚拟串口 接收_感叹号_04

 

  我这里因为直接使用MCU的内部时钟就没有勾选RCC了,然后直接配置时钟树,具体如下:

 USB必须是48MHz

STM32串口虚拟化 stm32 虚拟串口 接收_串口_05

 

 

 

  最后一点比较重要点的就是要配置USB堆的大小,把它改大一点,不然容易出现电脑实现出现黄色感叹号情况,这里选的编译软件是MDK-ARM。

 

STM32串口虚拟化 stm32 虚拟串口 接收_STM32串口虚拟化_06

 

 

   最后编译生成代码

 

STM32串口虚拟化 stm32 虚拟串口 接收_感叹号_07

 

 

 

2.用keil打开工程编辑

  找到usb_cdc_if.c文件,在文件开始处添加接收USB转串口数据的buff(uint_8 usbRxBuff[1000])和接收数据长度(int usbRxLen=0);然后添加下图中框出来的代码即可

 

STM32串口虚拟化 stm32 虚拟串口 接收_串口_08

 

 

 

3.编译程序烧录验证

  用串口助手看可以看到已经可以识别出来了,发送数据下去也可以准确接收并且返回,结果如下图示

 

 

STM32串口虚拟化 stm32 虚拟串口 接收_stm32_09

 

 

  注意:USB虚拟串口对波特率,校验位,数据位,停止位没有要求,你用串口助手不管使用什么样的方式来通信,都可以正常收发。

                 usb虚拟串口每次接收最大的数据包ReceivePacket是64个字节

Talk is cheap, show me the code