#问题描述
项目上要用到STOP模式,代码写完调试时发现执行完
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);执行完该函数后,电流缓慢减小,从800多微安慢慢降低到100多微安,距离手资料上说的0.43微安还有好多距离。。。
##解决办法
调试了半天发现和进入低功耗前的外设处理顺序有关,先把我的处理顺程序贴出来
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微安左右,虽然和官方资料还有点差距,但是对于项目来说已经满足了