STM32中怎么实现USB转串口功能

  介绍

本篇文章为大家展示了STM32中怎么实现USB转串口功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1。电脑上设置的串口波特率不影响USB接口传输的速率。

2。怎样获取电脑上串口助手设置的波特率,以设置USART1使其波特率与串口

助手一致。

波特率设置

其实STM32CubeMX生成的程序中已经提供了相关的接口,只需要用户自己实现即可。打开usbd_cdc_if.c文件,CDC_Control_FS函数中,添加如下程序。

, <形状类型=? _x0000_t75”=癴”>  STM32中怎么实现USB转串口功能

其中上面的注释是系统生成的,根据注释添加相应的红框中的程序.LineCoding是一个结构体:

<节>
 USBD_CDC_LineCodingTypeDef  LineCoding ={,,, 115200,,/*,波特率*/,,,,0 x00,,,,/*,停止位1 */,,,,0 x00,,,,/*,校验,安康;没有*/,,,,0 x08 ,,,/*,数据位,8 */};
  

USBD_CDC_LineCodingTypeDef的格式也是系统定义好的。

添加完成后,在电脑的串口助手上更改波特率时,系统会调用这段程序,重新配置USART1的波特率,使两者保持一致。

剩下的功能就是数据转发,即将USB接收的数据通过USART1发送出去,将USART1接收的数据发送到USB接口。

USB数据转发到USART1

同样是在usbd_cdc_if。c文件中,修改USB接收函数CDC_Receive_FS。将原来的程序屏蔽,添加串口发送的程序。

 STM32中怎么实现USB转串口功能

添加串口发送完成中断回调函数(前提是使能串口发送中断):

<节>
 void  HAL_UART_TxCpltCallback (UART_HandleTypeDef  * huart) {USBD_CDC_ReceivePacket才能(及hUsbDeviceFS);} 
  

USART1数据转发到USB

本例程是通过中断方式接收USART1数据,并通过接收超时时间来判断一帧数据接收完成。当然也可以通过其它方式实现转发,例程只是简单实现功能。

添加串口中断回调函数:

<节>
 void  HAL_UART_RxCpltCallback (UART_HandleTypeDef  * huart) {UserTxBufPtrIn + +才能,,,如果(UserTxBufPtrIn ==, APP_RX_DATA_SIZE)//防止溢出,,{,,,UserTxBufPtrIn =, 0;,,},, UR_Tick =, 0;//接收计时器清零,,UR_Flag =, 1;//正在接收,,HAL_UART_Receive_IT (huart,, (uint8_t  *)(时间+ UserTxBufferFS  UserTxBufPtrIn),, 1);} 
  

判断一帧数据接收完成后,通过USB接口转发出去。

<节>
如果(==UR_Flag  2) {UR_Flag 才能=,0;,,CDC_Transmit_FS (UserTxBufferFS, UserTxBufPtrIn);,, UserTxBufPtrIn =, 0;} 
  

上述内容就是STM32中怎么实现USB转串口功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

STM32中怎么实现USB转串口功能