单片机
返回首页

STM32——浅谈睡眠模式、停机模式、待机模式

2023-04-07 来源:zhihu

若要理解低功耗,则先要说一下STM32的事件和中断



事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件,但一个事件不一定对应一个中断。


当外部有信号输入时,如果通过了事件屏蔽寄存器,那么事件信号就进入脉冲触发器,引发一个脉冲信号,直接传递给相应的外设,用于触发,这就是一个纯硬件的过程,理解DMA的应该知道,这个方式不需要CPU参与,但是这也有它的缺点,如功能比较单一,仅能提供信号,不能提供信息,也就是只能产生指定功能的事件。如果通过中断屏蔽寄存器,就被直接送到CPU中,产生中断,如进入上面的入口函数开始处理。从这就可看出,事件是单纯硬件触发执行的过程,与CPU本身设计支持有关,而中断中则可以软件实现各种功能,而低功耗模式的事件唤醒就是stm32支持的事件之一。


对于STM32来说,共有3种低功耗模式:睡眠模式,停机模式,待机模式。

睡眠模式

当Cortex-M3遇到WFE(等待中断)或者WFI(等待事件)指令时会停止内部时钟,中带程序执行。尽管Cortex-M3停止工作,但是其外设仍在继续工作,直到某个外设产生事件或者中断时,内核将会被唤醒,藉此退出睡眠模式。


停机模式

倘若用户将Cortex-M3处理器的电源控制寄存器(Cortex Power Control Register,Cor-tex_PCR)中的SLEEPDEEP位置位,然后将STM32电源控制寄存器(STM32 Power Control Register.STM32 PCR)中的PDDS(Power Down Deep Sleep)位清除,就完成了 STM32停机模式的设置。


当停机模式设置完毕后,CPU一旦遇到WFI或 WFE指令就会停止工作,HSI和HSE 也进人关闭状态。但Flash和SRAM将会继续保持电源供应,所以此时STM32的所有工作状态仍然是保留着的。和睡眠模式一样,停机模式也可以通过外设中断唤醒,然面在停机模式下,除了外部中断控制单元,所有设备的时钟都被禁止了,只能通过在GPIO引脚上产生电平边沿触发外部中断的方式来将STM32从停机状态下唤醒。而前面也曾提到过,外部中断通道除了与GPIO连接,还和RTC时钟的报警事件连接,加之RTC的计数时钟并非来源于STM32的设备总线(而是直接来自LSI或LSE),因此还可以使用RTC模块实现定时将STM32从停机状态中唤醒。


待机模式


将Cortex_PCR中的SLEEP位进行置位,再将STM32_PCR中的PDDS位进行置位,如此一来,STM32则进入待机模式。


若要唤醒待机模式,有多种方式进行唤醒,分别位:RTC的闹钟事件、NRST的外部引脚复位、独立看门狗(IWDG)所产生的复位信号,以及GPIOA.0引脚上所产生的一个上升沿,但是若要是要该引脚所产生的上升沿来唤醒STM32,则必须事先设置为唤醒引脚功能。待机模式是STM32的最低功耗模式。


当进入待机模式后,所有的SRAM数据、Cortex-M3处理器的寄存器和STM32的寄存器内容都将会被清零。效果等同于硬件复位。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章