为了实现CDC设备类,设备需要支持一些设备类专用请求,这些类专用请求的处理在cdc_acm_req_handler()函数中,该函数的定义如下所示,其中SET_LINE_CODING命令用于响应主机向设备发送设备配置,包括波特率、停止位、字符位数等,收到的数据保存在noti_bu内。GET_LINE_CODING命令用于主机请求设备当前的波特率、停止位、奇偶校验...
可知上图获取波特率为:115200 SET LINE CODING 类似GET LINE CODING,用于主机设置从机当前属性,可修改波特率、停止位、校验位及数据位 SET CTRL LINE STATE 该请求没有数据输出阶段,作用是设置设备的DTR和RTS引脚电平,D0位表示DTR,D1位表示RTS 类请求回调函数内容如下: usb_status_t USB_DeviceCdcVcomCallback(cl...
ENUM_GET_PRODUCT_STRING:获取设备产品信息 ENUM_GET_SERIALNUM_STRING:获取设备序列号信息 ENUM_SET_CONFIG:SET CONFIGURE ENUM_COMPLETE:枚举完成 USB控制传输过程包含SETUP-DATA-STATUS三个阶段,如下是一个主机获取设备信息的传输过程GET_DESCRIPTOR: 如下是USB主机库一个SETUP-DATA-STATUS函数调用流程: usbh_ctrl_tr...
端点清除(class_clear_handler) 设备请求(class_setup_handler)cdc设备类请求:SET_LINE_CODINGGET_LINE_CODIN Keyboard hid设备类请求: SET_PROTOCOLGET_PROTOCOLSET_IDLEGET_IDLESET_REPORT 代码如下: IN传输处理 OUT传输处理(接收数据) 如何根据composite_vcp_keyboard例程进行开发本章将简单描述如何修改composite_vcp_...
·cdc设备请求(class_setup_handler)SET_LINE_CODINGGET_LINE_CODING代码如下: ·IN传输处理 ·OUT传输处理(接收数据) 如何根据vcp_loopback例程进行开发 本章将简单描述如何修改cdc例程的代码来进行开发,根据应用具体的需求来修改代码。 ·根据功能需求修改设备描述信息(cdc_desc.c, cdc_desc.h)设备描述信息(g_us...
(CDC_SET_LINE_CODING:你在用串口助手选择波特率时候,STM32就会调用这个分支进行修改USB波特率) (CDC_GET_LINE_CODING:获取STM32的USB波特率) case CDC_SET_LINE_CODING: USBD_CDC_LineCoding.bitrate = (pbuf[3] << 24) | (pbuf[2] << 16) | (pbuf[1] << 8) | pbuf[0]; ...
printf("linecoding.bitrate:%d\r\n",linecoding.bitrate);break;case GET_LINE_CODING:Buf[0] = (uint8_t)(linecoding.bitrate);Buf[1] = (uint8_t)(linecoding.bitrate >> 8);Buf[2] = (uint8_t)(linecoding.bitrate >> 16);Buf[3] = (uint8_t)(linecoding.bitrate >> 24);Buf[4] =...
类请求 Get coding line Set coding line 表 19. CDC 类请求 说明 获取当前数据帧参数.在 HOST_CLASS_REQUEST 阶段发送该请求. 设定数据帧参数 (比如波特率,奇偶性,停止位).在 HOST_CLASS 阶 段发送该请求. 5.4.3 5.4.4 CDC 类处理 CDC 类的后台函数处理批量管道中的数据接收与传输. 通过回调函数在...
(uint32_t value , uint8_t *pbuf , uint8_t len);/*Extern variables ---*/externLINE_CODING linecoding;/*Private function prototypes ---*//*Private functions ---*//***
USBD_CDC_LineCodingTypeDef LineCoding = { 115200, /* 波特率 */ 0x00, /* 停止位,默认1位 */ 0x00, /* 校验位,默认无 */ 0x08 /* 数据位,默认8位 */ }; /* usb_printf发送缓冲区, 用于vsprintf */ ...