STM32F407 USB 虚拟双串口
准备工作
通过STM32CubeMX生成一份标准的USB VCP例程.
代码修改
端点配置修改
-
增加第二个虚拟串口用到的端点配置,一个虚拟串口需要用到3个非0端点(2个bulk和一个interrupt)
-
设置增加端点的FIFO
注意 : 这里的FIFO大小的设置有一定的讲究,否则会导致一些异常,如将端点1和端点3的FIFO大小都设置为0x80则会导致某一个虚拟串口的数据会乱码显示
在参考的文章中发现这里为新增的端点设置内存时,有的为端点2和端点3设置FIFO,有的为端点3和端点4设置FIFO.测试发现:实际这里只需要为端点3设置FIFO.
-
为新增的端点增加初始化操作
描述符修改
-
将设备描述符修改为复合设备描述符
-
修改配置描述符
同时将头文件中的数组大小定义修改为如下:
-
修改最大的接口数配置
数据处理
- 修改CDC发送数据包和接收数据包的函数
主要是在函数中增加了端点号的参数,使该函数在使用中可以根据端口号选择具体使用的端点.
- 修改CDC通信接口函数
至此所有的修改便已经完成了,便可以通过编译下载到单片机上进行测试了.