STM32F1 Programming manual 学习笔记——2.5节

2.5 Power management

STM32和Cortex-M3处理器睡眠模式降低功耗:

  1. 睡眠模式关闭处理器时钟,其他系统和外设的时钟也许一直在运行
  2. 深度睡眠模式关闭STM32系统和外设时钟的大部分,在产品级别,这对应于停止或备用模式。有关详情,请参阅STM32参考手册的“电源模式”一节

2.5.1 Entering sleep mode

  1. Wait for interrupt:WFI,当处理器执行一个WFI指令的时候,它会阻止执行指令同时进入睡眠模式
  2. Wait for event:WFE,当处理器执行一个WFE指令的时候,它会检查这个寄存器的值,如果是0,那么处理器就会停止执行指令同时进入睡眠模式,如果是1,那么处理器将寄存器值清零同时继续执行指令而且也不会进入睡眠模式;
  3. Sleep-on-exit:如果SCR的SLEEPONEXIT位被设置为1,当处理器完成异常处理的执行之后,处理器将会返回Thread mode同时立即进入睡眠模式,只有在应用中只需要处理器在中断发生时才运行的情况下,这种机制才会被应用

2.5.2 Wakeup from sleep mode

  1. Wakeup from WFI or sleep-on-exit:一般情况下,处理器只有在拥有足够的优先级的异常产生异常进入的情况下,才会被唤醒;一些嵌入式系统可能必须在处理器醒来之后,以及在它执行中断处理程序之前执行系统恢复任务。为了达到这个目的,必须将PRIMASK位为1同时FAULTMASK位设置为0.如果一个被使能的中断到来同时比现有异常的优先级高,那么处理器唤醒但是不会执行这个中断处理直到这个处理设置PRIMASK为0
  2. Wakeup from WFE:处理器会被以下情况唤醒
    ① 处理器检测到一个由足够优先级引起异常入口的异常;
    ② 处理器检测到外部事件信号;
    ③ 紫外,如果SCR中的SEVONPEND位被设置为1,任何新的挂起的中断都会触发一个事件并唤醒处理器,即使中断被禁用或没有足够的优先级来导致异常进入;

2.5.3 The external event input

处理器提供了外部事件输入信号,这些信号可以由多达16个外部输入中断线来产生,比如PVD、RTC时钟或者USB唤醒时间;这些信号可以从WFE中唤醒处理器,或者设置内部的WFE事件寄存器为1来表示处理器不能在后面的WFE指令中进入睡眠模式

2.5.4 Power management programming hints

CMSIS提供了以下固有函数为那些指令:
									void __WFE(void) // Wait for Event
									void __WFI(void) // Wait for Interrupt

猜你喜欢

转载自blog.csdn.net/u012850592/article/details/89708886