1、什么是低功耗模式
RTOS在一般的应用中,处理器大量的时间都在处理空闲任务,此时可以考虑让处理器在空闲任务的时候进入低功耗模式。当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。 FreeRTOS就是通过在处理器处理空闲任务的时候将处理器设置为低功耗模式来降低功耗。一般会在空闲任务的钩子函数中执行低功耗相关处理。比如设置处理器进入低功耗模式、关闭其他外设时钟、降低系统主频等等。
问题:若任何中断均可以唤醒MCU,那么滴答定时器频繁中断则会影响低功耗效果,如何避免这个问题:
回答:将滴答定时器的中断周期修改为低功耗运行时间,退出低功耗后,需补上系统时钟节拍数,FreeRTOS的低功耗Tickless模式机制已经处理好了这些难点
2、 低功耗模式相关配置项
- configUSE_TICKLESS_IDLE:此宏用于使能低功耗Tickless模式
- configEXPECTED_IDLE_TIME_BEFORE_SLEEP:此宏用于定义系统进入相应低功耗模式的最短时长
- configPRE_SLEEP_PROCESSING(x):此宏用于定义需要在系统进入低功耗模式前执行的事务,如进入低功耗前关闭外设时钟以达到降低功耗的目的(进一步降低功耗)
- configPOSR_SLEEP_PROCESSING(x):此宏用于定义需要在系统退出低功耗模式后执行的事务,如退出低功耗后开启之前关闭的外设时钟,以使系统能够正常运行