case CDC_SET_LINE_CODING:USBD_CDC_LineCoding.bitrate = (pbuf[3] << 24) | (pbuf[2] << ...
(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]; USBD_CDC_LineCoding...
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)为USB接收回调函数,在USB VPC接收到数据时,会进入该函数,在该函数中进行USB数据接收处理即可。 USB转串口设备,需要在stm32的USB端接收到数据后转发到stm32 串口端 static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) { /* U...
在电脑设置串口参数时会调用这个函数,根据cmd判断主机发送的命令,CDC_SET_LINE_CODING就是主机在进行通信参数的设置,上面的注释已经写明了pbuf中的数据结构,前4个字节是波特率,然后是停止位,奇偶校验位和数据位数。获取到这个信息即可设置硬件串口的通信参数,这里只设置了波特率。 4.实验 左侧连接硬件串口,右侧连接USB...
1、STM32端(所谓的下位机):这边采用的是通过有图形化的STM32CubeIDE配置工程,配置好USB-CDC创建一个虚拟串口,与上位机通信。 2、Ubuntu端(所谓的上位机):上位机是版本20.04的ubuntu,安装有版本为noetic的ROS,通过建立一个ROS节点来打开串口并建立通信。
使用GetLineCoding来获取当前波特率,使用SetControlLineState来打开或关闭串口,这种操作是在Host端CDC驱动...
USBD_CDC_LineCodingTypeDef LineCoding = { 115200,/*baud rate*/ 0x00,/*stop bits - 1*/ 0x00,/*parity - none*/ 0x08,/*nb. of bits 8*/ }; 这段代码用于指示串口的基本设置。 在该文件的“CDC_Control_FS”函数中,在“CDC_SET_LINE_CODING:”下面,添加如下代码: ...
Itf_Control用于控制VCP的相关参数,根据cmd的不同,执行不同的操作,这里主要用到CDC_SET_LINE_CODING...
case CDC_GET_LINE_CODING: break; case CDC_SET_CONTROL_LINE_STATE: break; case CDC_SEND_BREAK: break; default: break; } return (USBD_OK); } int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) 虚拟串口接收函数,Buf为接收缓存。这个缓存实际上就是CDC_Init_FS()中设置的UserRxBuffe...
{ USART_SendData(USART1, *(data_buffer + i)); //added by dreamdive while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); }}2.bool USART_Config(void)函数中,数据长度设置错误导致乱码/*set the data type : only 8bits and 9bits is supported */switch (linecoding.data...