我用的是官方的STM32CubeMX生成的代码,USB配置为CDC模式,现在有个问题搞不懂,那就是如何判断数据已经接收完毕?假如PC有192字节数据要发送到USB设备,那么当USB接收到数据后就会进入中断,在这个函数有描述static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd);由于端点一次最大能传输64字节,因此192需要分成3次发送,但是不知道从哪里看出数据已经接收完了,函数里面有这么一个描述:
if ((ep->xfer_len == 0U) || (count < ep->maxpacket))
{
/* RX COMPLETE */
HAL_PCD_DataOutStageCallback(hpcd, ep->num);
}
else
{
HAL_PCD_EP_Receive(hpcd, ep->num, ep->xfer_buff, ep->xfer_len);
}
当进入第一个判断语句时,按理说已经是接收完成了,实际上只接收了64字节,搞不懂为什么 |