STM32 usb库:USBD_CDC_SetRxBuffer如何知道缓冲区大小?

STM32 usb库:USBD_CDC_SetRxBuffer如何知道缓冲区大小?,usb,stm32,Usb,Stm32,我正在试着用一些基本的USB CDC材料来制作stm32f103蓝色药丸 在示例中,有以下代码片段 #定义应用程序接收数据大小8 uint8_t UserRxBufferFS[应用程序接收数据大小]; 静态int8_t CDC_Init_FS(无效) { /*用户代码开始3*/ /*设置应用程序缓冲区*/ USBD_CDC_SetTxBuffer(&hUsbDeviceFS,UserTxBufferFS,0); USBD_CDC_SetRxBuffer(&hUsbDeviceFS,UserRx

我正在试着用一些基本的USB CDC材料来制作stm32f103蓝色药丸

在示例中,有以下代码片段

#定义应用程序接收数据大小8
uint8_t UserRxBufferFS[应用程序接收数据大小];
静态int8_t CDC_Init_FS(无效)
{ 
/*用户代码开始3*/
/*设置应用程序缓冲区*/
USBD_CDC_SetTxBuffer(&hUsbDeviceFS,UserTxBufferFS,0);
USBD_CDC_SetRxBuffer(&hUsbDeviceFS,UserRxBufferFS);
返回(USBD_OK);
/*用户代码结束3*/
}
所以。。。函数USBD_CDC_SetRxBuffer不将长度作为参数这怎么可能?

当我从终端发送一个包含144个字符的哑字符串时,我以64个字符的数据块获取数据

如果长度大于8,则表示缓冲区溢出。我在某个地方读到,USB数据包大小高达64个。嗯

那么,我应该根据什么设置应用程序接收数据大小?如何防止溢出


为什么USBD_CDC_SetRxBuffer不将缓冲区大小作为参数?

正如您所了解的,数据以64块的形式出现

因此,如果您有一个大于64字节的缓冲区,它不会被单个数据包溢出

然后,在调用USBD\u CDC\u ReceivePacket()之前,下一个数据包不会出现


在调用USBD_CDC_ReceivePacket()之前,您将有足够的时间处理数据。

尝试深入到库中,您将看到那里发生了什么