大家好,
我目前正在尝试在 IMXRT1170 上设置 USB CDC 主机。我找到了一个例子,但我无法弄清楚它是如何工作的。所以我从中了解到它从终端获取数据并将其发送到 USB 上,反之亦然。现在我不想要 32 字节的限制。我只想通过代码发送和接收数据。所以要发送数据,我正在使用以下调用:
USB_HostCdcDataSend(g_cdc.classHandle,"这是字符串\r\n",strlen("这是字符串\r\n"),
USB_HostCdcDataOutCallback, &g_cdc);
但是对于接收 USB_HostCdcDataInCallback 应该被调用而不管。
如果你看到下面的函数,首先是接收调用,所以它只在我发送数据时触发。
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);
如果 (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);
如果 (g_UsbSendNode)
{
USB_HostCdcDataSend(g_cdc.classHandle, (uint8_t *)&g_UsbSendNode->buffer[0], g_UsbSendNode->dataLength,
USB_HostCdcDataOutCallback, &g_cdc);
}
else
{
g_UsbSendBusy = 0;
}
}
USB RX 中断处理程序在哪里。我是 NXP MCU 的新手,发现它与 ST 相比有点难。