STM32L4 系列USB口打开后STOP2模式下有较大功耗问题的解决

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

 

 

你可能感兴趣的:(嵌入式软件,STM32L4,USB电源)