三 stm32低功耗模式

前言

在做很多产品的时候,功耗是必须要考虑的一项因素,一定程度上决定了你的产品是否有竞争力,降低功耗可以从硬件上和软件上进行处理,而软件上进入低功耗模式是降功耗很有效的一项措施。这里对stm32的三种低功耗模式进行介绍,下图是参考手册的简介。
在这里插入图片描述

Standby待机模式

简述

该模式是三种低功耗模式中功耗最低的一种,最低2ua,类似于软件复位,每次唤醒后程序都要重头开始,保存的一些变量也会丢失。该模式是在CORTEX-M3深睡眠模式时关闭电压调节器,整个1.8V供电区域被断电,PLL,HSI,HSE振荡器也被断电,SRAM和寄存器内容丢失,只有备份寄存器和待机电路维持供电。该模式对实时采集不好用。

代码实现

进入待机模式

在以下条件下执行WFI(等待中断)或WFE(等待事件)指令:
设置cortex-M3系统控制寄存器中的SLEEPDEEP位
设置电源控制寄存器(PWR_CR)中的PDDS位
清除电源控制/状态寄存器(PWR_CSR)中的WUF位置

/**
  * 使能WAKE_UP引脚
  * @brief  Enables or disables the WakeUp Pin functionality.
  * @param  NewState: new state of the WakeUp Pin functionality.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void PWR_WakeUpPinCmd(FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  *(__IO uint32_t *) CSR_EWUP_BB = (uint32_t)NewState;
}

/**
  * @brief  Enters STANDBY mode.
  * @param  None
  * @retval None
  */
void PWR_EnterSTANDBYMode(void)
{
  /* Clear Wake-up flag */
  PWR->CR |= PWR_CR_CWUF;
  /* Select STANDBY mode */
  PWR->CR |= PWR_CR_PDDS;
  /* Set SLEEPDEEP bit of Cortex System Control Register */
  SCB->SCR |= SCB_SCR_SLEEPDEEP;
/* This option is used to ensure that store operations are completed */
#if defined ( __CC_ARM   )
  __force_stores();
#endif
  /* Request Wait For Interrupt */
  __WFI();
}

待机模式唤醒

1.WKUP引脚上升沿唤醒
2.RTC闹钟
3.NRST引脚上外部复位 异步复位脚
4.IWDG复位

说明:单片机在进入待机模式时程序停止运行,中断程序也不会,WAKEUP引脚不需要配置,只需要给一个上升沿就能唤醒

Stop停止模式

1.简述
所有时钟均关闭,但是停机模式下唤醒时钟默认没经过倍频的,可能需要
重新配置。停止模式和待机模式的差别在于电压调节器的开关,待机模式关电压调节器,停止模式开启或者处于低功耗模式
2.唤醒
只能通过外部中断唤醒

Sleep睡眠模式

适用于等待外设的中断或事件,降低系统的功耗,用户可以在进入睡眠模式之前关闭不工作的外设时钟,以此节省功耗。

如何测试mcu功耗

我们通常使用电流来衡量mcu的功耗情况,是因为功率P=V*I,电压一般固定为3.3v,所以我们如果知道mcu的整体电流就知道mcu的整体功率大小。
测试的时候,将万用表选择合适的电流档,然后串联进VCC处就可以测到整体电流

降低功耗常用手段

硬件

选型上选择低功耗的器件,再采用低功耗电路设计

软件

1.关闭未使用的外设时钟,GPIO口做相应设置(具体看芯片GPIO口相关寄存器默认值)
2.降低时钟频率
3.采用低功耗模式,间歇式工作
4.与所接外设IC的统筹
5.测试的时候断开调试器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foreverwlh

你的鼓励将是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值