STM32L151RET6 HAL库 低功耗STOP模式

#问题描述
项目上要用到STOP模式,代码写完调试时发现执行完
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);执行完该函数后,电流缓慢减小,从800多微安慢慢降低到100多微安,距离手资料上说的0.43微安还有好多距离。。。
STM32L151RET6 HAL库 低功耗STOP模式_第1张图片
##解决办法
调试了半天发现和进入低功耗前的外设处理顺序有关,先把我的处理顺程序贴出来
void DevEnterLowPowerMode(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};

HAL_UART_DeInit(&huart1);
HAL_UART_DeInit(&huart2);
HAL_UART_DeInit(&huart3);
HAL_UART_DeInit(&huart4);
HAL_UART_DeInit(&huart5);


__HAL_RCC_DMA1_CLK_DISABLE();
__HAL_RCC_DMA2_CLK_DISABLE();

__HAL_RCC_USART1_CLK_DISABLE();
__HAL_RCC_USART2_CLK_DISABLE();
__HAL_RCC_USART3_CLK_DISABLE();
__HAL_RCC_UART4_CLK_DISABLE();
__HAL_RCC_UART5_CLK_DISABLE();
	
BatteryChargingHandle();

GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pull = GPIO_NOPULL;

/GPIO_PIN_0,GPIO_PIN_4,GPIO_PIN_11,GPIO_PIN_12/
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_6|
GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_13|GPIO_PIN_14
|GPIO_PIN_15;

// GPIO_InitStruct.Pin = GPIO_PIN_All;//调试
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/GPIO_PIN_12/
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|
GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_13|
GPIO_PIN_14|GPIO_PIN_15;

//	GPIO_InitStruct.Pin = GPIO_PIN_All;//调试
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


GPIO_InitStruct.Pin = GPIO_PIN_All;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
	
	
GPIO_InitStruct.Pin = GPIO_PIN_2;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);	
	
	GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
	HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
	
HAL_DBGMCU_DisableDBGStopMode();
HAL_DBGMCU_DisableDBGSleepMode();
HAL_DBGMCU_DisableDBGStandbyMode();


/*Configure GPIO pins : PCPin PCPin */
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_11);
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

__HAL_RCC_GPIOA_CLK_DISABLE();
__HAL_RCC_GPIOB_CLK_DISABLE();
__HAL_RCC_GPIOC_CLK_DISABLE();
__HAL_RCC_GPIOD_CLK_DISABLE();
__HAL_RCC_GPIOH_CLK_DISABLE();

	 __HAL_RCC_LSI_DISABLE();
   __HAL_RCC_HSI_DISABLE();		
 
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);

}

进入低功耗后,电流大概3.1微安左右,虽然和官方资料还有点差距,但是对于项目来说已经满足了

你可能感兴趣的:(STM32L151RET6 HAL库 低功耗STOP模式)