我需要将数据从计算机发送到我的STM32F3,因此我决定使用内置的uC USB。
但现在我有一个问题 - 我想一次性向stm32发送大量数据 - 我的意思是200-500字节左右。
当我用minicom从PC发送少于64个字符的数据包时 - 一切都很好 - 回调函数CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)会被触发一次 - 它使UsbRxFlag变为可用,只是为了通知正在运行的程序有可用的数据。
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
if( (Buf[0] == 'A') & (Buf[1] == 'T') ){
GPIOB->BSRR = (uint32_t)RX_Led_Pin;
UsbRxFlag = 1;
}
return (USBD_OK);
/* USER CODE END 6 */
}
但是当我尝试发送更多的数据(只是来自minicom的长文本)到uC时,出现一些奇怪的情况 - 有时候uC根本不会有反应 - 有时候它不会考虑一些数据。
如何处理通过USB-CDC向STM32F3发送超过64个字节的数据?
(Buf[0] == 'A') & (Buf[1] == 'T')
更常见的写法是(Buf[0] == 'A') && (Buf[1] == 'T')
,但在这里没有真正的功能差异。&
与&&
。 - chux - Reinstate Monica