stm32cube配置完后,连续使用 CDC_Transmit_FS()发送数据,只成功发送了第一个数据。
解决方法:
在CDC_Transmit_FS()函数中添加 while(hcdc->TxState) ,等待数据发送完成。
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
{
uint8_t result = USBD_OK;
uint32_t Timeout = HAL_GetTick();
/* USER CODE BEGIN 7 */
USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
if (hcdc->TxState != 0){
return USBD_BUSY;
}
USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
/* USER CODE END 7 */
while(hcdc->TxState)
{
if(HAL_GetTick() - Timeout >=10)//超时
{
break;
}
}
return result;
}