STM32学习笔记——低功耗模式

        

目录

睡眠模式

停止模式

待机模式

扩展——RTC复用功能从停止模式和待机模式唤醒

通过 RTC 复用功能从停止模式唤醒器件

● 要通过 RTC 闹钟事件从停止模式唤醒器件

● 要通过 RTC 入侵事件或时间戳事件从停止模式唤醒器件

● 要通过 RTC 唤醒事件从停止模式唤醒器件

● 要通过 RTC 闹钟事件从待机模式唤醒器件

● 要通过 RTC 入侵事件或时间戳事件从待机模式唤醒器件

● 要通过 RTC 唤醒事件从待机模式唤醒器件

RTC 复用功能唤醒标志安全清零顺序

● 使用 RTC 闹钟从低功耗模式唤醒器件时

● 使用 RTC 唤醒从低功耗模式唤醒器件时:

● 使用 RTC 入侵从低功耗模式唤醒器件时:

● 使用 RTC 时间戳从低功耗模式唤醒器件时:


        默认情况下,系统复位或者上电复位之后,微控制器会进入运行模式,在运行模式下,CPU通过HCLK提供时钟,执行程序代码。

        在CPU不需要运行时,可以根据需求选择系统提供的低功耗模式来节省功耗。

        系统提供了3个低功耗模式:

                ● 睡眠模式(Cortex™-M4F 内核停止,外设保持运行)

                ● 停止模式(所有时钟都停止)

                ● 待机模式(1.2 V 域断电)       

        此外,可通过下列方法之一降低运行模式的功耗:

                ● 降低系统时钟速度

                ● 不使用 APBx 和 AHBx 外设时,将对应的外设时钟关闭

睡眠模式

       睡眠模式有2中进入机制:立即休眠、退出时休眠。(由SLEEPONEXIT位决定 )

       立刻休眠:执行WFI或WFE,STM32立即进入睡眠模式,唤醒后程序会从暂停的地方继续运行。

       退出时休眠:执行WFI或WFE,STM32会等待STM32从中断处理程序中退出时进入睡眠模式,唤醒后程序从暂停的地方继续运行。

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

        •WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒

        •WFE指令进入睡眠模式,可被唤醒事件唤醒

                   其中,唤醒事件可以通过以下方式产生:

        ● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex™-M4F 系 统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。

        ● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。

停止模式

        在停止模式下,1.2 V 域中的所有时钟都会停止,PLL、HSI 和 HSE RC 振荡器也被禁止。内部 SRAM 和寄存器内容将保留。(停止模式:调压器还在工作,所以内部SRAM和寄存器内容会保留)

待机模式

        待机模式,调压器关闭,1.2V域断电。PLL、HSI振荡器和HSE振荡器将关闭。处了备份域和待机电路中的寄存器外,SRAM和寄存器内容会丢失。

        待机模式下的 I/O 状态 在待机模式下,除以下各部分以外,所有 I/O 引脚都处于高阻态:

        ● 复位引脚(仍可用)

      ● RTC_AF1 引脚 (PC13)(如果针对入侵、时间戳、RTC 闹钟输出或 RTC 时钟校准输出              进行了配置)

        ● WKUP 引脚 (PA0)(如果使能)

扩展——RTC复用功能从停止模式和待机模式唤醒

        RTC复用功能可以从低功耗模式唤醒MUC。复用功能包括RTC闹钟(闹钟A和闹钟B)、RTC唤醒事件、RTC入侵事件和RTC时间戳事件。

        其中,RTC闹钟或RTC唤醒事件,不需要依赖外部中断即可将系统从低功耗模式唤醒(自动唤醒模式)。

通过 RTC 复用功能从停止模式唤醒器件
● 要通过 RTC 闹钟事件从停止模式唤醒器件

a) 将 EXTI 线 17 配置为检测外部信号的上升沿(中断或事件模式)

b) 使能 RTC_CR 寄存器中的 RTC 闹钟中断

c) 配置 RTC 以生成 RTC 闹钟

● 要通过 RTC 入侵事件或时间戳事件从停止模式唤醒器件

a) 将 EXTI 线 21 配置为检测外部信号的上升沿(中断或事件模式)

b) 使能 RTC_CR 寄存器中的 RTC 时间戳中断,或者使能 RTC_TAFCR 寄存器中的 RTC 入侵中断

c) 配置 RTC 以检测入侵事件或时间戳事件

● 要通过 RTC 唤醒事件从停止模式唤醒器件

a) 将 EXTI 线 22 配置为检测外部信号的上升沿(中断或事件模式)

b) 使能 RTC_CR 寄存器中的 RTC 唤醒中断

c) 配置 RTC 以生成 RTC 唤醒事件 通过 RTC 复用功能从待机模式唤醒器件

● 要通过 RTC 闹钟事件从待机模式唤醒器件

a) 使能 RTC_CR 寄存器中的 RTC 闹钟中断

b) 配置 RTC 以生成 RTC 闹钟

● 要通过 RTC 入侵事件或时间戳事件从待机模式唤醒器件

a) 使能 RTC_CR 寄存器中的 RTC 时间戳中断,或者使能 RTC_TAFCR 寄存器中的 RTC 入侵中断

b) 配置 RTC 以检测入侵事件或时间戳事件

● 要通过 RTC 唤醒事件从待机模式唤醒器件

a) 使能 RTC_CR 寄存器中的 RTC 唤醒中断

b) 配置 RTC 以生成 RTC 唤醒事件

RTC 复用功能唤醒标志安全清零顺序

        如果在 PWR 唤醒标志 (WUTF) 清零之前将所选 RTC 复用功能置 1,则出现下一事件时无法 检测到相关功能,因为检测操作只在信号上升沿到来时执行一次。 为了避免 RTC 复用功能所映射到的引脚发生跳变,并确保器件从停止模式和待机模式正常退出,建议在进入待机模式之前按照以下顺序进行操作:

● 使用 RTC 闹钟从低功耗模式唤醒器件时

a) 禁 RTC 闹钟中断(RTC_CR 寄存器中的 ALRAIE 或 ALRBIE 位)

b) 将 RTC 闹钟 (ALRAF/ALRBF) 标志清零

c) 将 PWR 唤醒 (WUF) 标志清零

d) 使能 RTC 闹钟中断

e) 重新进入低功耗模式

● 使用 RTC 唤醒从低功耗模式唤醒器件时:

a) 禁止 RTC 唤醒中断(RTC_CR 寄存器中的 WUTIE 位)

b) 将 RTC 唤醒 (WUTF) 标志清零

c) 将 PWR 唤醒 (WUF) 标志清零

d) 使能 RTC 唤醒中断

e) 重新进入低功耗模式

● 使用 RTC 入侵从低功耗模式唤醒器件时:

a) 禁止 RTC 入侵中断(RTC_TAFCR 寄存器中的 TAMPIE 位)

b) 将入侵 (TAMP1F/TSF) 标志清零

c) 将 PWR 唤醒 (WUF) 标志清零

d) 使能 RTC 入侵中断

e) 重新进入低功耗模式

● 使用 RTC 时间戳从低功耗模式唤醒器件时:

a) 禁止 RTC 时间戳中断(RTC_CR 寄存器中的 TSIE 位)

b) 将 RTC 时间戳 (TSF) 标志清零

c) 将 PWR 唤醒 (WUF) 标志清零

d) 使能 RTC 时间戳中断

e) 重新进入低功耗模式

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值