我正在使用带有 USB cdc 主机的 IMXRT1062。我用了一个例子,但我不明白它是如何工作的。 此示例从终端获取数据并将其发送到 USB 上,反之亦然。我想通过我的代码发送和接收数据。我使用:
USB_HostCdcDataSend(g_cdc.classHandle, bufferOut[0], bufferLen),
USB_HostCdcDataOutCallback、g_cdc);
发送数据。对于接收数据,我使用:
USB_HostCdcDataRecv(g_cdc.classHandle, (uint8_t *) bufferRx[0],
bufferRxLen、USB_HostCdcDataInCallback、g_cdc);我应该被称为无礼的。
如果您看到示例(下面的函数),则在我发送数据时有 receive 调用。这个例子效果很好。
void USB_HostCdcDataOutCallback(void *param, uint8_t *data, uint32_t dataLength, usb_status_t status)
{
freeNodeToQueue( g_EmptyQueue, g_UsbSendNode);
g_CurrentUsbRecvNode = getNodeFromQueue( g_EmptySendQueue);
if (g_CurrentUsbRecvNode)
{
g_CurrentUsbRecvNode->next = NULL;
g_CurrentUsbRecvNode->dataLength = dataLength;
USB_HostCdcDataRecv(g_cdc.classHandle, (uint8_t *) g_CurrentUsbRecvNode->buffer[0],
g_CurrentUsbRecvNode->dataLength, USB_HostCdcDataInCallback, g_cdc);
}
g_UsbSendNode = getNodeFromQueue( g_UsbSendQueue);
if (g_UsbSendNode)
{
USB_HostCdcDataSend(g_cdc.classHandle, (uint8_t *) g_UsbSendNode->buffer[0], g_UsbSendNode->dataLength,
USB_HostCdcDataOutCallback、g_cdc);
}
else
{
g_UsbSendBusy = 0;
}
}
Is it possible callusb_hostcdcdatarecv(g_cdc.classHandle, (uint8_t *) g_CurrentUsbRecvNode->buffer[0],
g_CurrentUsbRecvNode->dataLength, USB_HostCdcDataInCallback, g_cdc); independently from Send func
tion?