stm32F103R6之低功耗模式

目录

概述

睡眠模式

停止模式

待机模式


概述

在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

STM32F103有三种低功耗模式:

  • 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)
  • 停止模式(所有的时钟都已停止)
  • 待机模式(1.8V电源关闭)

此外,在运行模式下,根据功耗与频率成正比关系,可以通过以下方式来降低功耗:

  • 降低系统时钟
  • 关闭APB和AHB总线上未被使用的外设时钟。

 

stm32F103R6之低功耗模式

图 1低功耗模式一览

睡眠模式

通过执行WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:

  • SLEEP-NOW:如果SLEEPONEXIT被清除,当WFI或WFE被执行时,微控制器立即进入睡眠模式。
  • SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时(处理完所有中断后),微控制器就立即进入睡眠模式。

在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。

如何退出睡眠模式?

1、如果是执行WFI指令进入的睡眠模式,任意一个外设中断都能将系统从睡眠模式唤醒。

2、如果是执行WFE指令进入的睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。

停止模式

停止模式是在Cortex™-M3的睡眠模式基础上结合了外设的时钟控制机制。

在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。

在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。

以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入停止模式:

  • 设置Cortex-M3系统控制寄存器中的SLEEPDEEP位
  • 清除电源控制寄存器(PWR_CR)中的PDDS位
  • 通过设置PWR_CR中LPDS位选择电压调节器的模式

注:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。如果在进入停止模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。

如何退出停止模式?

当一个中断(执行WFI命令进入的停止模式)或唤醒事件(执行WFE命令进入的停止模式)导致退出停止模式时,HSI RC振荡器被选为系统时钟。

当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。

待机模式

待机模式可实现系统的最低功耗。该模式是在Cortex-M3睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份域的寄存器和待机电路维持供电。

在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:

  • 复位引脚(始终有效)
  • 当被设置为防侵入或校准输出时的TAMPER引脚
  • 被使能的唤醒引脚

以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入待机模式:

  • 设置Cortex™-M3系统控制寄存器中的SLEEPDEEP位
  • 设置电源控制寄存器(PWR_CR)中的PDDS位
  • 清除电源控制/状态寄存器(PWR_CSR)中的WUF位

如何退出待机模式?

当一个外部复位(NRST引脚)、IWDG(独立看门狗)复位、WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时,微控制器从待机模式退出。

从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。 从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丰年稻香

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

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

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

打赏作者

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

抵扣说明:

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

余额充值