NXP MCU 技术论坛
直播中

邓长生

9年用户 859经验值
擅长:可编程逻辑
私信 关注
[问答]

在IMXRT1170上设置USB CDC主机,要如何操作?

大家好,
我目前正在尝试在 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 相比有点难。

            

更多回帖

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