FreeRTOS 实时操作系统第二十讲 - 低功耗 Tickless 模式

一、STM32 低功耗模式讲解

  ①电池类产品,一般要求低功耗设计,比如农业物联网的节点采集设备

  ②低功耗设计,除了 MCU,软件, 硬件设计同等重要,以 STC15 低功耗实战为例说明

  ③Tickless 模式主要针对睡眠模式,当然,也可以自行使用停机模式,待机模式

  ④ 由于 STM32 物联网实战板的硬件没有低功耗设计,本例程只讲解 Tickless 模式原理与应用

  ⑤ STM32 的 3 种低功耗详细讲解与应用编程,直接观看 stm32 物联网实战的视频,不再重复讲解,本例程重点讲解 FreeRTOS 的 Tickless 模式

  STM32 物联网实战有详细讲解,B 站播放视频。

二、Tickless 模式介绍

2.1、Tickless 模式介绍

  Tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 FreeRTOS,RTX 和 uCOS-III 等。

Tickless 是怎样一种模式呢?

  仅从字母上看,Tick 是滴答时钟的意思,less 是 Tick 的后缀,表示较少的,整体看就是表示减少滴答时钟节拍运行。

  在 FreeRTOS 系统中,当用户任务都被挂起或者阻塞时,最低优先级的空闲任务会得到执行。那么 STM32 支持的低功耗模式就可以放在空闲任务里面实现。为了实现低功耗最优设计,我们还不能直接把睡眠模式放在空闲任务就可以了。由于 Tick 中断停止,将导致无法及时运行阻塞超时的任务,进入空闲任务后,首先要计算可以执行低功耗的最大时间,也就是求出下一个要执行的高优先级任务还剩多少时间。然后就是把低功耗的唤醒时间设置为这个求出的时间 (其实就是重载 Systick),如果没有其它中断或事件唤醒 STM32,到时间后 Systick 中断会将 STM32 唤醒,继续执行任务。

  这个就是所谓的 Tickless 模式。从上面的讲解中可以看出,实现 Tickless 模式最麻烦的是计算低功耗可以执行的时间。这个难题,FreeRTOS 已为我们做好。

2.2、Tickless 模式配置

  ① 将宏定义 configUSE_TICKLESS_IDLE 设置为 1 即可

  ② 配置 configEXPECTED_IDLE_TIME_BEFORE_SLEEP,只有当系统可运行于低功耗模式的时钟节拍数大于等于这个参数时,系统才可以进入到低功耗模式。

  此参数已在 FreeRTOS.h 文件中定义了,默认为 2,用户可以自定义时,不能小于 2

三、Tickless 模式源码分析

  1、阅读源码

  2、讲讲如何在进入低功耗模式前关闭外设,退出模式后恢复,进一步降低系统功耗

  3、讲讲如何在 Tickless 框架中应用待机与停机模式

四、Tickless 模式编程

4.1、STM32cubeMX 配置

4.2、configEXPECTED_IDLE_TIME_BEFORE_SLEEP 设置

4.3、在进入与退出 Tickless 模式时增加代码,通常是关闭外设等,此例程是关闭数码管显示,作为演示用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值