NXP MCU 技术论坛
直播中

张鑫

8年用户 1131经验值
私信 关注
[问答]

求助,关于IMXRT1062主机CDC USB问题求解

我正在使用带有 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 function?

更多回帖

发帖
×
20
完善资料,
赚取积分