uwyciw100 发表于 2019-5-28 17:20:05

ST USB CDC收发问题

在使用HAL库做虚拟串口时,没有找到CDC接口中,关于数据传输完成的标志,只发现USBD_CDC_TransmitPacket和USBD_CDC_ReceivePacket两个函数。请问各位有发现传输完成函数吗?

流水源 发表于 2019-5-29 11:42:17

这个在USB传输完成里面找下。可以在USBD_CDC.C的USBD_CDC_DataIn和USBD_CDC_DataOut函数中解析。或者查询标志PCDHandleTypeDef类中RxState和TxState应该也可以。

uwyciw100 发表于 2019-5-30 14:00:41

流水源 发表于 2019-5-29 11:42
这个在USB传输完成里面找下。可以在USBD_CDC.C的USBD_CDC_DataIn和USBD_CDC_DataOut函数中解析。或者查询标 ...

这几个函数都是端点单次传输完成的相关操作,当数据长度大于64字节,似乎就没法用了。

edmundlee 发表于 2019-5-30 14:07:22

HAL没用过, 旧的STD库, 我是这样做的

usb_end.c
void EP1_IN_Callback (void)
{
        xSemaphoreGiveFromISR(Sema_EVCP,0);   // <<---------------
        packet_sent = 1;
}

流水源 发表于 2019-5-30 14:38:00

uwyciw100 发表于 2019-5-30 14:00
这几个函数都是端点单次传输完成的相关操作,当数据长度大于64字节,似乎就没法用了。 ...

你可以在这里查询所有数据是否发送接收完啊

uwyciw100 发表于 2019-5-30 15:02:33

流水源 发表于 2019-5-30 14:38
你可以在这里查询所有数据是否发送接收完啊

每个端点有一个xfer_count和xfer_len参数。确实能确定数据是否发送完成,只是要改一下库。看来CDC这个类的接口还是得再丰富下。
页: [1]
查看完整版本: ST USB CDC收发问题