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

STM32L431进入STOP1模式后ADC产生多余功耗

[复制链接]
Alf·Romeo 提问时间:2024-11-22 15:15 / 已解决

我使用STM32L431进入STOP1模式,原始功耗为53uA。在进入停止模式之前,我调用HAL_ADC_DeInit(&hadc1)禁用ADC,并在退出STOP1模式后调用MX_ADC1_Init()重新启用ADC。测量的功耗为66uA,大约多出10uA。为什么呢?如果退出STOP1模式后不调用MX_ADC1_Init(),功耗仍为53uA。是因为ADC会产生功耗吗?应该不会的吧。

下面是我的进入和退出STOP模式的函数:

void EnterStop2ModeRTC(void)
{
  HAL_RCCEx_WakeUpStopCLKConfig(RCC_STOP_WAKEUPCLOCK_MSI);
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
  __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);
  __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
  __HAL_RTC_TIMESTAMP_CLEAR_FLAG(&hrtc, RTC_FLAG_TSF);
  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG();
  HAL_ADC_DeInit(&hadc1);
  HAL_SuspendTick();
  // __HAL_RCC_DMA1_CLK_DISABLE();
  cpuStopFlg = true;
  SCB->SCR |= SCB_SCR_SLEEPONEXIT_Msk;
  __HAL_RCC_PWR_CLK_ENABLE();
  HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI); 
}

void ExitStop2ModeRTC(void)
{
  SystemClock_Config();
  HAL_ResumeTick();
  MX_ADC1_Init();
  cpuStopFlg = false;
}
收藏 评论1 发布时间:2024-11-22 15:15

举报

1个回答
xmshao 最优答案 回答时间:2024-11-22 16:50:01
输出手册里有个关于各个外设的功耗表格,类似下面的:

rrr.png



如果使用ADC的,至少得开启ADC和相关管脚GPIO的时钟,如果说用到DMA的话,DMA也要增加功耗。你可以结合上面表格估算下。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版