stm32f407的USB虚拟串口发送问题

2019-08-17 08:07发布

本帖最后由 无帝老三 于 2017-6-12 18:49 编辑

使用USB虚拟串口官方例程修改
/**
  * @brief  CDC_Transmit_FS
  *         Data send over USB IN endpoint are sent over CDC interface
  *         through this function.           
  *         @note
  *         
  *                 
  * @param  Buf: Buffer of data to be send
  * @param  Len: Number of data to be send (in bytes)
  * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY
  */
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
{
  uint8_t result = USBD_OK;
  /* 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 */
  return result;
}
当调用5次CDC_Transmit_FS发送数据时,PC端串口会接收不到最后一次调用CDC_Transmit_FS发送的数据,
当再次执行上述操作时,前次操作未上传的数据会出现再本次操作的第一条。
请问下大家,是什么原因导致的?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
335920284
1楼-- · 2019-08-17 09:09
 精彩回答 2  元偷偷看……
15937417823
2楼-- · 2019-08-17 09:33
什么鬼
正点原子
3楼-- · 2019-08-17 10:14
帮顶
335920284
4楼-- · 2019-08-17 15:25
//if (hcdc->TxState != 0){   //  return USBD_BUSY;   //}你把状态检测注释了?加回去试试

一周热门 更多>