一、基本介绍
在某些应用场合中,对于功耗的要求很严格,而一般的MCU都有对应的低功耗模式,在进行裸机开发时,可以使用的MCU的低功耗模式(ps:我没用过)。在FreeRTOS中也提供了一个叫Tickless的低功耗模式。
在stm32中,主要有睡眠、停止和待机三种低功耗模式,而FreeRTOS的低功耗模式就是利用的stm32的睡眠模式--WFI,其可以被任意中断唤醒。
FreeRTOS中的Tickless低功耗模式运行在MCU处理空闲任务,当有别的任务运行时,就会唤醒MCU。
二、使用方法
FreeRTOS低功耗模式的使用非常简单,主要是配置四个宏定义
1.configUSE_TICKLESS_IDLE--此宏用于使能低功耗 Tickless 模式,配置为1。
2.configEXPECTED_IDLE_TIME_BEFORE_SLEEP--此宏用于定义系统进入相应低功耗模式的最短时长,默认为两个systick周期。
3.configPRE_SLEEP_PROCESSING(x)--此宏用于定义需要在系统进入低功耗模式前执行的事务,如:进入低功耗前关闭外设时钟,以达到降低功耗的目的,该宏定义为函数调用。
4.configPOST_SLEEP_PROCESSING(x)--此宏用于定义需要在系统退出低功耗模式后执行的事务,如:退出低功耗后开启之前关闭的外设时钟,以使系统能够正常运行,该宏定义为函数调用。
当该四项配置完毕后,即可使用FreeRTOS的Tickless低功耗模式。