一、简介:
很多设备像电子穿戴设备,移动物联网设备都要求低功耗,为此,裸机开发也推出相应的低功耗模式,如STM32的睡眠,停止,待机等,FreeRTOS也推出了Tickless低功耗模式,在进行低功耗保护的同时,保护了线程。
而Tickless实际上就是通过调用睡眠模式的WFI/WFE来实现降低功耗的作用,我们知道,在OS的运行过程中,当所有其他的任务都挂起或阻塞的时候,就会运行空闲任务,即IDLE Task,而Tickless实现的机理就是在空闲任务的时候进入睡眠模式,当其他任务准备运行的时候,唤醒MCU,从而实现降低功耗的目的。
二、Tickless模式相关配置项
三、使用Tickless模式的步骤
1、将FreeRTOSConfig.h中的configUSE_TICKLESS_IDLE置位1
2、在FreeRTOSConfig.h中添加以下代码:
其实就是用来给这两个宏定义两个函数,然后我们再去编写这两个函数,来实现进入低功耗模式所要进行的操作,和退出Tickless模式之前索要进行的操作。
这边我这样写:
3、然后再在主函数里面详细写这两个处理函数:
在这里,我的操作就是进入Tickless模式前关闭了GPIO的时钟,退出就开启这个时钟。