/** * @brief Initializes the PCD MSP. * @param hpcd: PCD handle * @retval None */ void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) { GPIO_InitTypeDef GPIO_InitStruct; /* Enable the GPIOA clock */ __GPIOA_CLK_ENABLE(); /* Configure USB DM and DP pins. This is optional, and maintained only for user guidance. */ GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF0_USB; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Enable USB FS Clock */ __USB_CLK_ENABLE(); if (hpcd->Init.low_power_enable == 1) { /* Enable EXTI Line 18 for USB wakeup */ __HAL_USB_EXTI_ENABLE_IT(); } /* Set USB FS Interrupt priority */ HAL_NVIC_SetPriority(USB_IRQn, 3, 0); /* Enable USB FS Interrupt */ HAL_NVIC_EnableIRQ(USB_IRQn); }
/** * @brief Initializes the PCD MSP. * @param hpcd: PCD handle * @retval None */ void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) { GPIO_InitTypeDef GPIO_InitStruct; /* Enable the GPIOA clock for USB DataLines */ __GPIOA_CLK_ENABLE(); /* Enable the GPIOB clock for USB external Pull-Up */ __GPIOB_CLK_ENABLE(); /* Configure USB DM and DP pins */ GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Enable USB FS Clock */ __USB_CLK_ENABLE(); /* Enable SYSCFG Clock */ __SYSCFG_CLK_ENABLE(); #if defined (USE_USB_INTERRUPT_REMAPPED) /*USB interrupt remapping enable */ __HAL_REMAPINTERRUPT_USB_ENABLE(); #endif if(hpcd->Init.low_power_enable == 1) { /* Enable EXTI Line 18 for USB wakeup */ __HAL_USB_EXTI_CLEAR_FLAG(); __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER(); __HAL_USB_EXTI_ENABLE_IT(); #if defined (USE_USB_INTERRUPT_DEFAULT) /* USB Default Wakeup Interrupt */ HAL_NVIC_EnableIRQ(USBWakeUp_IRQn); /* Enable USB Wake-up interrupt */ HAL_NVIC_SetPriority(USBWakeUp_IRQn, 0, 0); #elif defined (USE_USB_INTERRUPT_REMAPPED) /* USB Remapped Wakeup Interrupt */ HAL_NVIC_EnableIRQ(USBWakeUp_RMP_IRQn); /* Enable USB Wake-up interrupt */ HAL_NVIC_SetPriority(USBWakeUp_RMP_IRQn, 0, 0); #endif } #if defined (USE_USB_INTERRUPT_DEFAULT) /* Set USB Default FS Interrupt priority */ HAL_NVIC_SetPriority(USB_LP_CAN_RX0_IRQn, 0x0F, 0); /* Enable USB FS Interrupt */ HAL_NVIC_EnableIRQ(USB_LP_CAN_RX0_IRQn); #elif defined (USE_USB_INTERRUPT_REMAPPED) /* Set USB Remapped FS Interrupt priority */ HAL_NVIC_SetPriority(USB_LP_IRQn, 0x0F, 0); /* Enable USB FS Interrupt */ HAL_NVIC_EnableIRQ(USB_LP_IRQn); #endif }