请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32L011F4 低功耗下 ,电流会突然增大

[复制链接]
麻袋 提问时间:2021-5-14 11:43 / 未解决

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

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

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

  1. MX_GPIO_Init();       
  2.         MX_ADC_Init();
  3.         HAL_ADC_MspInit(&hadc);       
  4.   /* USER CODE BEGIN 2 */
  5.         for(i=0;i<50;i++)
  6.         {
  7.                 HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
  8.                 HAL_Delay(50);
  9.         }       
  10.         InitEnterHaltMode();
复制代码
  1. void InitEnterHaltMode(void)  //进入低功耗
  2. {       
  3.         HAL_ADC_Stop(&hadc);
  4.         HAL_ADC_MspDeInit(&hadc);        //执行了PA4的 DeInit(),关闭了ADC时钟
  5.         InitPinEnterHaltMode();          //设置IO ,不使用的设置为模拟                

  6.         HAL_SuspendTick();
  7.         /* Enable Power Control clock */
  8.         __HAL_RCC_PWR_CLK_ENABLE();
  9.         HAL_PWR_EnableBkUpAccess();
  10.         HAL_PWR_DisablePVD();
  11.         HAL_PWREx_EnableUltraLowPower();//使能超低功耗
  12.         HAL_PWREx_EnableFastWakeUp();        //使能快速唤醒
  13.         // 若需要在低功耗模式下调试程序,可以打开此函数
  14. //    HAL_DBGMCU_DBG_DisableLowPowerConfig(DBGMCU_SLEEP | DBGMCU_STOP | DBGMCU_STANDBY);       
  15.                
  16.         __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI);               
  17.         __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除所有相关的唤醒标志
  18.         HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFI);
  19. }

  20. void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
  21. {
  22.   if(adcHandle->Instance==ADC1)
  23.   {
  24.     __HAL_RCC_ADC1_CLK_DISABLE();
  25.     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
  26.   }
  27. }
复制代码

收藏 评论7 发布时间:2021-5-14 11:43

举报

7个回答
麻袋 最优答案 回答时间:2021-7-23 10:58:44
CLEAR_BIT(ADC1->CR, ADC_CR_ADVREGEN);  需要清除这个位,问题已经解决
废鱼 回答时间:2021-5-14 13:33:59
您好。建议您先把LED和ADC的电阻去掉,是不是还是这样。如果功耗不变,说明是这两个地方有需要调整的。如果变化了,再考虑其他的排除。
麻袋 回答时间:2021-5-14 14:18:36
飞羽一条 发表于 2021-5-14 13:33
您好。建议您先把LED和ADC的电阻去掉,是不是还是这样。如果功耗不变,说明是这两个地方有需要调整的。如果 ...

就是ADC的问题,如果屏蔽adc初始化,是一直维持在2uA的,  
废鱼 回答时间:2021-5-15 09:02:30
ADC的IO口怎么处理的?把IO的配置修改一下。
奇迹 回答时间:2021-5-15 09:08:22
进入休眠的时候,需要把不用的接口逆初始化
麻袋 回答时间:2021-5-17 10:28:36
奇迹 发表于 2021-5-15 09:08
进入休眠的时候,需要把不用的接口逆初始化

执行过了这个函数哦HAL_ADC_MspDeInit,具体代码在上面。其他的IO口,除了LED和一个使能脚,都设置为了模拟输入
麻袋 回答时间:2021-5-17 10:30:13
飞羽一条 发表于 2021-5-15 09:02
ADC的IO口怎么处理的?把IO的配置修改一下。

进入休眠之前,执行过了这个函数哦HAL_ADC_MspDeInit,具体代码在上面。其他的IO口,除了LED和一个使能脚,都设置为了模拟输入。adc这个引脚也设置成为输出高位置输出低,但是没有用,一样的电流增加
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版