FreeRTOS学习 -- 低功耗Tickless模式

一、STM32F4低功耗模式

STM32 本身就支持低功耗,一共有三种低功耗模式:

  • 睡眠(Sleep)模式。
  • 停止(Stop)模式。
  • 待机(Standby)模式。

在这里插入图片描述

1、睡眠模式(Sleep)

进入睡眠模式

进入睡眠模式有两种指令:WFI(等待中断)和WFE(等待事件)。根据Cortex-M内核的SCR(系统控制)寄存器可以选择使用立即休眠还是退出休眠。当SCR寄存器SLEEPONEXIT(bit1)位为 0 的时候使用立即休眠,当为 1 的时候使用退出时休眠。

CMSIS(Cortex 微控制器软件接口标准)提供了两个函数来操作指令 WFI 和 WFE,我们可以直接使用这两个函数: WFI 和 WFE。FreeRTOS 系统会使用 WFI 指令进入休眠模式。

退出休眠模式

如果使用WFI指令进入休眠模式的话,那么任意一个中断都会将MCU从休眠模式中唤醒,如果使用WFE指令进入休眠模式的话,那么当有事件发生的话就会退出休眠模式。比如配置一个EXIT线作为事件。
当 STM32F429 处于休眠模式的时候 Cortex-M4F 内核停止运行,但是其他外设运行正常,比如 NVIC、SRAM 等。休眠模式的功耗比其他两个高,但是休眠模式没有唤醒延时,应用程序可以立即运行。

2、停止模式(Stop)

停止模式基于Cortex-M4F 的深度休眠模式与外设时钟门控,在此模式下 1.2V 域的所有时钟都会停止,PLL、HSI和HSE RC振荡器会被禁止,但是内部SRAM的数据会被保留。调压器可以工作在正常模式,也可配置为低功耗模式。如果有必要的话可以通过将PWR_CR 寄存器的FPDS位置 1 来使Flash在停止模式的时候进入掉电状态,当Flash处于掉电状态的时候MCU从停止模式唤醒以后需要更多的启动延时。停止模式的进入和退出如下:
在这里插入图片描述

3、待机模式(Standby)

相比于前面两种低功耗模式,待机模式的功耗最低。待机模式是基于 Cortex-M4F 的深度睡眠模式,其中调压器被禁止。1.2V域断电,PLL、HSI振荡器和HSE振荡器也被关闭。除了备份区域和待机电路相关的寄存器器外,SRAM和其他寄存器的内容都将丢失。待机模式的进入和退出如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

聚优致成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值