FreeRTOS系列|低功耗管理

低功耗管理

很多应用场合对于空耗的要求很严格,比如可穿戴低功耗产品、物联 低功耗产品等。一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。FreeRTOS也提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应用开发

1. 低功耗管理介绍

1.1 STM32低功耗模式

STM32本身就支持低功耗模式,以STM32F1为例,其有三种低功耗模式:睡眠(Sleep)模式停止(Stop)模式待机(Standby)模式

STM32的电源管理系统主要分为以下三个部分:1为备份域;2为调压器供电电路;3为ADC电源电路

  • 合理的进入低功耗模式,避免频繁使MCU在低功耗和运行模式下进行不必要的切换。RTOS的系统时钟源于硬件的某个周期性定时器(Cotex-M内核多数采用SysTick),RTOS的任务调度器可以预期到下一个周期性任务(或定时器任务)的触发时间,从而调整系统时钟定时器中断触发时间,以避免RTOS进入不必要的时间中断,从而更长时间停留在低功耗模式中。此时RTOS的时钟不再是周期的而是动态的(在原有的时钟基准时将不再产生中断,即Tickless)
  • 当MCU被唤醒时,通过某种方式为系统时钟提供补偿。MCU可能被动态调整过的系统时钟中断或突发性的外部事件所唤醒,都可以通过运行在低功耗模式下的某种定时器来计算出MCU处于低功耗模式下的时间,在MCU唤醒后对系统时间进行软件补偿
  • 软件实现时,根据具体的应用情景和MCU低功耗特性来处理问题。尤其是MCU的低功耗特性,不同MCU处于不同的低功耗模式下所能使用的外设(主要是定时器)是不同的,RTOS的系统时钟可以进行适当的调整

2. Tickless低功耗模式实现

2.1 宏 configUSE_TICKLESS_IDLE

要想使用Tickless模式,必须将FreeRTOSConfig.h中的如下宏置1;FreeRTOS只提供了个别的硬件平台模式,STM32采用模式1即可,如果采用其他模式,配置为2

2.2 宏 portSUPPRESS_TICKS_AND_SLEEP

使能了Tickless模式后,当空闲任务是唯一可运行的任务(其他任务都处于阻塞或挂起态)以及系统处于低功耗模式的时间大于configEXPECTED_IDLE_TIME_BEFORE_SLEEP个时钟节拍时,FreeRTOS内核就会调用宏portSUPPRESS_TICKS_AND_SLEEP来处理低功耗相关的工作

函数 vPortSuppressTicksAndSleep 是实际的低功耗执行代码,本来需要用户自己实现,但是针对STM32平台,FreeRTOS已经帮我们实现了,其源码如下示

2.3 宏 configPRE_SLEEP_PROCESSING() 和 configPOST_SLEEP_PROCESSING()

在低功耗设计中不仅是将处理器设置到低功耗模式就行了,有时还需要做一些其他处理,比如将处理器降低到合适的频率、修改时钟源(切换到内部时钟源)、关闭外设时钟以及关闭其他功能模块电源等

弱符 函数PreSleepProcessing和PostSleepProcessing需要用户自已根据需要编写

2.4 宏configEXPECTED_IDLE_TIME_BEFORE_SLEEP

处理器工作在低功耗模式的时间没有任何限制,可以等于1个时钟节拍,但是时间太短的话就没有意义,比如1个时钟节拍,刚进入低功耗模式就要退出低功耗模式。因此需要对工作在低功耗模式的时间加一个限制,宏configEXPECTED_IDLE_TIME_BEFORE_SLEEP就是用来完成此功能的

默认情况下此宏设置为2个时钟节拍,且最小不能小于2个时钟节拍

3. Tickless低功耗模式实例

本实例介绍如何使用FreeRTOS的低功耗Tickless模式。本例程是在二值信 量例程的基础上增加了低功耗模式

使用STM32CubeMX将FreeRTOS移植到工程中,创建两个任务、一个二值信 量,开启串口中断。

LED_Task:闪烁LED1,提示系统运行正常
CMDprocess_Task:根据串口收到的指令,控制不同的LED2/LED3的亮灭
二值信 量:用于串口中断和CMDprocess_Task任务间的同步

3.1 STM32CubeMX设置
  • RCC设置外接HSE,时钟设置为72M
  • PC0/PC1/PC2设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平
  • USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位;开启串口中断
  • 激活FreeRTOS,添加任务,设置任务名称、优先级、堆栈大小、函数名称等参数

  • 启用低功耗Tickless模式

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月20日
下一篇 2021年3月20日

相关推荐