ST USB CDC收发问题
在使用HAL库做虚拟串口时,没有找到CDC接口中,关于数据传输完成的标志,只发现USBD_CDC_TransmitPacket和USBD_CDC_ReceivePacket两个函数。请问各位有发现传输完成函数吗?这个在USB传输完成里面找下。可以在USBD_CDC.C的USBD_CDC_DataIn和USBD_CDC_DataOut函数中解析。或者查询标志PCDHandleTypeDef类中RxState和TxState应该也可以。 流水源 发表于 2019-5-29 11:42
这个在USB传输完成里面找下。可以在USBD_CDC.C的USBD_CDC_DataIn和USBD_CDC_DataOut函数中解析。或者查询标 ...
这几个函数都是端点单次传输完成的相关操作,当数据长度大于64字节,似乎就没法用了。 HAL没用过, 旧的STD库, 我是这样做的
usb_end.c
void EP1_IN_Callback (void)
{
xSemaphoreGiveFromISR(Sema_EVCP,0); // <<---------------
packet_sent = 1;
} uwyciw100 发表于 2019-5-30 14:00
这几个函数都是端点单次传输完成的相关操作,当数据长度大于64字节,似乎就没法用了。 ...
你可以在这里查询所有数据是否发送接收完啊 流水源 发表于 2019-5-30 14:38
你可以在这里查询所有数据是否发送接收完啊
每个端点有一个xfer_count和xfer_len参数。确实能确定数据是否发送完成,只是要改一下库。看来CDC这个类的接口还是得再丰富下。
页:
[1]