freeRTOS——Tickless低功耗模式知识总结与实战

本文详细介绍了FreeRTOS中的低功耗模式,包括睡眠模式、Tickless原理,以及如何通过配置宏如configUSE_TICKLESS_IDLE和相关处理函数来启用和管理低功耗状态。实例代码展示了在freertos_demo.c中如何应用这些配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 低功耗模式知识总结

1.1 三种模式

1)睡眠模式
2)停止模式
3)待机模式

1.2 睡眠模式

1、进入睡眠模式:
WFI 指令:__WFI
WFE 指令:__WFE
2、退出睡眠模式:
任何中断或事件都可以唤醒睡眠模式
在这里插入图片描述

1.3 Tickless低功耗模式的原理

Tickless低功耗模式的本质是通过调用指令 WFI 实现睡眠模式!
因此,可以在本该空闲任务执行的期间,让MCU 进入相应的低功耗模式;当其他任务准备运行的时候,唤醒MCU退出低功耗模式

2 Tickless模式相关配置项

1) configUSE_TICKLESS_IDLE 1 使能 0 不使能 2 自己实现低功耗使能
此宏用于使能低功耗 Tickless 模式
2)configEXPECTED_IDLE_TIME_BEFORE_SLEEP
此宏用于定义系统进入相应低功耗模式的最短时长
3)configPRE_SLEEP_PROCESSING(x)
此宏用于定义需要在系统进入低功耗模式前执行的事务,如:进入低功耗前关闭外设时钟,以达到降低功耗的目的。
4)configPOSR_SLEEP_PROCESSING(x)
此宏用于定义需要在系统退出低功耗模式后执行的事务,如:退出低功耗后开启之前关闭的外设时钟,以使系统能够正常运行。

3 Tickless模式实战

在这里插入图片描述

3.1freertos_demo.c

#include "freertos_demo.h"
#include "./SYSTEM/usart/usart.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./SYSTEM/delay/delay.h"
/*FreeRTOS*********************************************************************************************/
#include "FreeRTOS.h"
#include "task.h"

/*注意要点:
*1.在FreeRTOSConfig.h中设置以下两个宏的值
*configUSE_TICKLESS_IDLE 置为1
*configEXPECTED_IDLE_TIME_BEFORE_SLEEP  置为2(预计低功耗持续时间至少为2秒)
*
*2.在FreeRTOSConfig.h中两个函数宏定义
* configPRE_SLEEP_PROCESSING(x)   PRE_SLEEP_PROCESSING()  定义在进入低功耗模式前执行的函数 
*configPOST_SLEEP_PROCESSING(x)  POST_SLEEP_PROCESSING()  定义在退出低功耗模式后执行的函数 
*
*3.在freertos_demo.h与freertos_demo.c 中分别声明和定义void PRE_SLEEP_PROCESSING(void)、 void POST_SLEEP_PROCESSING(void)
*
*4.在在FreeRTOSConfig.h中注意包涵"freertos_demo.h"文件
*/


/*FreeRTOS配置*/

/* START_TASK 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define START_TASK_PRIO 1                   /* 任务优先级 */
#define 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_libinc++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值