USB虚拟串口的接收方式:
USB 虚拟串口的接收采用中断方式,芯片在接收到数据后回触发中断调用CDC_Receive_FS()
函数来处理接收到的数据.
USB虚拟串口一次最多接收64个字节的数据,如果收到的数据大于64个字节则会连续多次调用CDC_Receive_FS()
函数来处理接收到的数据.
问题:
-
每次下载完成程序后,必须重新插拔USB线,PC才能识别到串口设备?
解决方法:在每次USB初始化之前,配置USB的两个引脚拉低几个ms,即可让PC重新枚举该USB设备.
函数功能
USB发送
USBD_CDC_SetTxBuffer()
和USBD_CDC_TransmitPacket()
函数是启动数据发送过程的一组函数,要成对使用.
USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff, uint16_t length)
: 将要发送数据的缓存的指针和大小赋值给pdev
结构体变量中USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev)
: 将要发送数据的缓存指针和大小告诉USB发送器,USB会自动发送这些数据.
USB接收
首先在初始化的时候,通过USBD_CDC_SetRxBuffer()
函数给USB库指定一个接收缓冲区,让USB控制器收到数据以后可以往里填.
CDC_Receive_FS()
函数是USB接收中断回调函数.