STM32h743 使用cdc_rndis_template ,usb_dc_low_level_init实现如下
- void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
- {
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
- if(hpcd->Instance==USB_OTG_HS)
- {
- /* USER CODE BEGIN USB_OTG_HS_MspInit 0 */
- /* USER CODE END USB_OTG_HS_MspInit 0 */
- /** Initializes the peripherals clock
- */
- PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
- PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
- if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
- {
- Error_Handler();
- }
- /** Enable USB Voltage detector
- */
- HAL_PWREx_EnableUSBVoltageDetector();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**USB_OTG_HS GPIO Configuration
- PB14 ------> USB_OTG_HS_DM
- PB15 ------> USB_OTG_HS_DP
- */
- GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF12_OTG2_FS;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- /* Peripheral clock enable */
- __HAL_RCC_USB_OTG_HS_CLK_ENABLE();
- /* USB_OTG_HS interrupt Init */
- HAL_NVIC_SetPriority(OTG_HS_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(OTG_HS_IRQn);
- /* USER CODE BEGIN USB_OTG_HS_MspInit 1 */
- /* USER CODE END USB_OTG_HS_MspInit 1 */
- }
- }
- void usb_dc_low_level_init(void)
- {
- PCD_HandleTypeDef hpcd = {0};
- hpcd.Instance = USB_OTG_HS;
- HAL_PCD_MspInit(&hpcd);
- }
usb_config.h实现如下
- #define USBD_IRQHandler OTG_HS_IRQHandler
- #define USBD_BASE (0x40040000UL)
- #define CONFIG_USBDEV_EP_NUM 6
- #define CONFIG_USB_DWC2_RAM_SIZE 1280
但是不进入usb中断,没反应