在上传描述符时候,主机会期待usb设备上传指定数量的数据,如果usb 的数据长度少于指定长度并且是最大包长度的整数倍,上传空包 结束传输,模式主机空等待!这个好理解
在数据传输阶段,串口数据的长度本身就不是固定,液不用=到指定数据,应该不用传输空包才对吧
但是看 stmcubex 生成的代码,有上传空包,是它不对 还是我理解错了
if (pdev->pClassData != NULL)
{
if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U))
{
/* Update the packet total length */
pdev->ep_in[epnum].total_length = 0U;
/* Send ZLP */
USBD_LL_Transmit(pdev, epnum, NULL, 0U);
}
else
{
hcdc->TxState = 0U;
}
return USBD_OK; |