STM32
直播中

李永每

7年用户 1355经验值
私信 关注
[问答]

stm32L011F4低功耗下电流会突然增大怎么解决?

在配置低功耗的时候,遇到了一个比较奇怪的现象。 硬件是LDO+单片机最小系统+1个LED+adc引脚接电阻到地,没有外部晶振。  在stop模式下,电流是2.4uA,但是约过2分45秒后,电流突然增大到70uA,每次都是这样。弄了两天也没弄好。求助各位大佬。

贴出代码,初始化是cube生成的,ADC为PA4,

按键唤醒在啥时间上都可以,唤醒后灯会闪烁,电流是5mA


  • 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);
  •   }
  • }



回帖(1)

范佳慧

2024-4-3 09:42:42
CLEAR_BIT(ADC1->CR, ADC_CR_ADVREGEN);  需要清除这个位
举报

更多回帖

发帖
×
20
完善资料,
赚取积分