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供电。