我直接粘文本吧,这个传图片不太会。1.static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USB_Uartx_RxCpltCallback();//添加的自定义回调函数
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
return (USBD_OK);
/* USER CODE END 6 */
}
第一个是在回调函数中添加一个函数
2.void USB_Uartx_RxCpltCallback(void)
{
uint16_t usb_rx_len = 0;
usb_rx_len = strlen((char*)UserRxBufferFS);
if((usb_rdat_length+usb_rx_len)<USB_DAT_LENMAX)//不超过内存最大值
{
memcpy(usb_rdat+usb_rdat_length,UserRxBufferFS,usb_rx_len);//内存赋值
usb_rdat_length+=usb_rx_len;
}
memset(UserRxBufferFS,0x00,usb_rx_len);
}
第二个就是将缓存数据存在usb_rdat[]中。
3.[09:20:46.339]发→◇31 32 33 34 35 0D 0A □
[09:20:46.344]收←◆31 32 33 34 35 0D 0A 5E
[09:20:47.021]发→◇31 32 33 34 35 0D 0A □
[09:20:47.026]收←◆31 32 33 34 35 0D 0A 5E
[09:20:47.296]发→◇31 32 33 34 35 0D 0A □
[09:20:47.302]收←◆31 32 33 34 35 0D 0A 5E
[09:20:47.514]发→◇31 32 33 34 35 0D 0A □
[09:20:47.519]收←◆31 32 33 34 35 0D 0A 5E
第三个就是串口助手返回的数据。可以看到每次返回都会多出几个字节,进入仿真可以看到在UserRxBufferFS中就已经多了这么几个字节
|