解析/*--------------------------------------------------------------------------*/ /** * @brief UAC Class Initial * * @param[in] None * * @return None * * @details This function is used to configure endpoints for UAC class */ void UAC_Init(void) { /* Init setup packet buffer */ /* Buffer for setup packet -> [0 ~ 0x7] */ USBD->STBUFSEG = SETUP_BUF_BASE; /*****************************************************/ /* EP0 ==> control IN endpoint, address 0 */ USBD_CONFIG_EP(EP0, USBD_CFG_CSTALL | USBD_CFG_EPMODE_IN | 0); /* Buffer range for EP0 */ USBD_SET_EP_BUF_ADDR(EP0, EP0_BUF_BASE); /* EP1 ==> control OUT endpoint, address 0 */ USBD_CONFIG_EP(EP1, USBD_CFG_CSTALL | USBD_CFG_EPMODE_OUT | 0); /* Buffer range for EP1 */ USBD_SET_EP_BUF_ADDR(EP1, EP1_BUF_BASE); /*****************************************************/ /* EP2 ==> Isochronous IN endpoint, address 1 */ //USBD_CONFIG_EP(EP2, USBD_CFG_EPMODE_IN | ISO_IN_EP_NUM | USBD_CFG_TYPE_ISO); USBD_CONFIG_EP(EP2, USBD_CFG_EPMODE_IN | BULK_IN_EP_NUM); /* Buffer offset for EP2 */ USBD_SET_EP_BUF_ADDR(EP2, EP2_BUF_BASE); /*****************************************************/ /* EP3 ==> Isochronous OUT endpoint, address 2 */ //USBD_CONFIG_EP(EP3, USBD_CFG_EPMODE_OUT | ISO_OUT_EP_NUM | USBD_CFG_TYPE_ISO); USBD_CONFIG_EP(EP3, USBD_CFG_EPMODE_OUT | BULK_OUT_EP_NUM); /* Buffer offset for EP3 */ USBD_SET_EP_BUF_ADDR(EP3, EP3_BUF_BASE); /* trigger receive OUT data */ USBD_SET_PAYLOAD_LEN(EP3, EP3_MAX_PKT_SIZE); }
时间: 2023-07-18 20:48:44 浏览: 84
Rockchip Pin-Ctrl 开发指南 V1.0-20160725
3星 · 编辑精心推荐
这段代码是用于初始化 UAC 类的端点(endpoints),并配置它们的缓冲区。首先,设置了 STBUFSEG 寄存器,使用 SETUP_BUF_BASE 作为设置包(setup packet)的缓冲区。然后,配置了 EP0 和 EP1,它们分别是控制 IN 和控制 OUT 端点,地址都是 0。对于每个端点,都使用 USBD_CONFIG_EP 函数进行配置,使用 USBD_SET_EP_BUF_ADDR 函数设置它的缓冲区地址。最后,配置了 EP2 和 EP3,分别是 Isochronous IN 和 Isochronous OUT 端点,地址分别是 1 和 2。但是,注释中提到的 ISO_IN_EP_NUM、ISO_OUT_EP_NUM 和 EP3_MAX_PKT_SIZE 没有在代码中定义。
阅读全文