如何设置USB CDC线路编码?

1.什么是线路编码?

线路编码用于传输UART接口的参数,该接口使用USB CDC-虚拟COM端口进行仿真。在STM32中,传统USB库是在文件usbd_CDC_if.c、函数CDC_Control_xS(FS用于全速USB,HS用于高速USB)中处理的线路编码。STM32CubeMX生成CDC_Control_xS函数为空,您可以在STM32CubeMX项目库中找到处理方案。
 

2.线路编码结构

首先,您需要定义行编码结构:
USBD_CDC_LineCodingTypeDef LineCoding={115200,/*波特率*/0x00,/*停止位-1*/0x00、/*奇偶校验-无*/0x08/*位数量*/};
则需要将结构正确地添加到CDC_ control_xS函数中:
static int8_t CDC_Control_xS(uint8_t cmd,uint8_t*pbuf,uint16_t length大小写CDC_GET_LINE_CDING:pbuf[0]=(uint8_t)(线路编码.比特率);pbuf[1]=(uint8_t)(行编码比特率>>8);pbuf[2]=(uint8_t)(行编码比特率>>16);pbuf[3]=(uint8_t)(行编码比特率>>24);pbuf[4]=行编码格式;pbuf[5]=行编码,奇偶类型;pbuf[6]=行编码数据类型;打破返回(USBD_OK);/*用户代码结束5*/}