待机 唤醒

STM32 低功耗模式

系统或电源复位后,微控制器处于运行状态之下,HCLK为CPU提供时钟,内核执行代码。
CPU不需要运行时,可用低功耗模式节省功耗

运行模式下,可降低系统时钟,关闭APB和AHB总线上未被使用的外设时钟来降低功耗。

3种低功耗模式

睡眠模式

内核停止,外设运行

停止模式(典型的电流为350uA)

时钟停止,1.8V内核电源工作
PLL,HIS,HSE RC振荡器功能禁止
寄存器和SARM内容保留

待机模式-(最低功耗2.2uA电流)

1.8V 内核电源关闭
只有备份寄存器和待机电路维持供电
寄存器和SRAM内容全部丢失

在这里插入图片描述
大部分的I/O引脚都处于高阻态,除复位引脚、RTC_AF1引脚、使能的WKUP引脚

对于使能了RTC中断后的待机模式

操作步骤:
1、禁止RTC中断
2、清零对应中断标志位
3、清除PWR唤醒标志
4、重新使能RTC对应中断
5、进入低功耗模式

相关寄存器和库函数

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
{
  uint32_t tmpreg = 0;
  
  /* Check the parameters */
  assert_param(IS_PWR_REGULATOR(PWR_Regulator));
  assert_param(IS_PWR_STOP_ENTRY(PWR_STOPEntry));
  
  /* Select the regulator state in STOP mode ---------------------------------*/
  tmpreg = PWR->CR;
  /* Clear PDDS and LPDS bits */
  tmpreg &= CR_DS_MASK;
  
  /* Set LPDS, MRLVDS and LPLVDS bits according to PWR_Regulator value */
  tmpreg |= PWR_Regulator;
  
  /* Store the new value */
  PWR->CR = tmpreg;
  
  /* Set SLEEPDEEP bit of Cortex System Control Register */
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
  
  /* Select STOP mode entry --------------------------------------------------*/
  if(PWR_STOPEntry == PWR_STOPEntry_WFI)
  {   
    /* Request Wait For Interrupt */
    __WFI();
  }
  else
  {
    /* Request Wait For Event */
    __WFE();
  }
  /* Reset SLEEPDEEP bit of Cortex System Control Register */
  SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);  
}
void PWR_EnterSTANDBYMode(void)
{
  /* Select STANDBY mode */
  PWR->CR |= PWR_CR_PDDS;
  
  /* Set SLEEPDEEP bit of Cortex System Control Register */
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
  
  /* This option is used to ensure that store operations are completed */
#if defined ( __CC_ARM   )
  __force_stores();
#endif
  /* Request Wait For Interrupt */
  __WFI();
}

实验程序

待机唤醒配置步骤

需要配置电源控制寄存器

使能电源时钟
RCC_APB!PeriphClockCmd(RCC_APB!Periph_PWR,ENABLE);
RTC相关处理:关闭RTC相关中断
设置WK_UP引脚作为唤醒源。
PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能
设置SLEEPDEEP位,设置PDDS位 ,执行WFI指令,进入待机模式
void PWR_EnterSTANDBYMode(void);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

。✧* ꧁流痕꧂✧*。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值