FreeRTOS 低功耗模式

一.简介

        一般可穿戴设备低功耗产品,物联网低功耗产品等会有此需求

        FreeRTOS提供了一个Tickless低功耗模式,方便低功耗产品开发

        Tickless低功耗模式本质是通过调用WFI指令(arm平台指令,如果是其他平台则为其他指令)实现睡眠模式。当有中断或者类似中断的事件发生则推出睡眠模式

        如果要使能该功能需要定义configUSE_TICKLESS_IDLE宏

        一共由三个值:

        0:关闭

        1:使用FreeRTOS配置低功耗流程

        2:自定义低功耗配置流程

        configEXPECTED_IDLE_TIME_BEFORE_SLEEP:

                系统进入低功耗模式最短时长

        configPRE_SLEEP_PROCESSING:

                系统进入低功耗模式前可以自定义一些流程

        configPOST_SLEEP_PROCESSING:

                系统退出低功耗模式后执行的事务

二.设计思想

        Tickless低功耗模式在arm平台上本质是通过调用WFI指令实现睡眠模式

        一般来说对于整个系统运行来说,大部分时间都处于idle(空闲任务)执行中。空闲任务就是指当系统中所以其他任务都处于阻塞或者挂起中,空闲任务就会执行。因此我们可以在空闲任务执行的期间,让mcu进入低功耗模式;当其他任务准备运行的时候,就退出低功耗模式!

        那此时就有问题了:

        --->当其他任务准备运行的时候<---,系统如何识别其他任务准备运行的时候?答案是找到最快退出阻塞的任务,并且获取其阻塞时间。这个任务的阻塞时间就是空闲任务进入低功耗的时长。

        --->任何中断都可以唤醒MCU<---,那么系统节拍滴答定时器,每1ms中断一次,均会唤醒MCU,这样低功耗模式的效果会大打折扣!!

        为了满足上述两个问题,我们需要修改滴答定时器的中断周期修改为低功耗运行时间,并且退出低功耗后,需要补上系统时钟的节拍!!也就是动态的修改滴答定时器的中断周期,这个中断周期与最快退出阻塞的任务的阻塞时间对应,实时变化。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值