stm32L011F4 低功耗下 ,电流会突然增大
[复制链接]
本帖最后由 麻袋 于 2021-5-12 16:17 编辑
在配置低功耗的时候,遇到了一个比较奇怪的现象。 硬件是LDO+单片机最小系统+1个LED+adc引脚接电阻到地,没有外部晶振。 在stop模式下,电流是2.4uA,但是约过2分45秒后,电流突然增大到70uA,每次都是这样。弄了两天也没弄好。求助各位大佬。
贴出代码,初始化是cube生成的,ADC为PA4
MX_GPIO_Init();
MX_ADC_Init();
HAL_ADC_MspInit(&hadc);
/* USER CODE BEGIN 2 */
for(i=0;i<50;i++)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(50);
}
InitEnterHaltMode();
void InitEnterHaltMode(void) //进入低功耗
{
HAL_ADC_Stop(&hadc);
HAL_ADC_MspDeInit(&hadc); //执行了PA4的 DeInit(),关闭了ADC时钟
InitPinEnterHaltMode(); //设置IO ,不使用的设置为模拟
HAL_SuspendTick();
/* Enable Power Control clock */
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWR_EnableBkUpAccess();
HAL_PWR_DisablePVD();
HAL_PWREx_EnableUltraLowPower();//使能超低功耗
HAL_PWREx_EnableFastWakeUp(); //使能快速唤醒
// 若需要在低功耗模式下调试程序,可以打开此函数
// HAL_DBGMCU_DBG_DisableLowPowerConfig(DBGMCU_SLEEP | DBGMCU_STOP | DBGMCU_STANDBY);
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除所有相关的唤醒标志
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFI);
}
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
{
if(adcHandle->Instance==ADC1)
{
__HAL_RCC_ADC1_CLK_DISABLE();
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
}
}
|