STM32L4系列MUC,如果開了USB功能,會打開USB的電源,此電源在系統進入STOP2模式後,依舊存在,並且有100uA以上的功耗。因此,需要在進入STOP2前,關閉此電源,STOP2喚醒後,在打開此電源。
相關接口如下:
/* USB PINS DeInit */
void STM32_USB_GPIO_DeInit(void)
{
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12|GPIO_PIN_11);
/* Disable VDDUSB */
if (__HAL_RCC_PWR_IS_CLK_DISABLED())
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWREx_DisableVddUSB();
}
/* USB PINS Init*/
void STM32_USB_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
/* USB_OTG_FS GPIO Configuration
PA12 ------> USB_OTG_FS_DP
PA11 ------> USB_OTG_FS_DM
*/
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* Enable VDDUSB */
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWREx_EnableVddUSB();
}
進入STOP2前,USB相關引腳DeInit,關閉USB供電,STOP2喚醒後,調用Init,配置USB引腳並打開USB供電。