1、如何降低功耗?
一般的简单应用中处理器大量的时间都在处理空闲任务,所以我们就可以考虑当处理器处理空闲任务的时候就进入低功耗模式,当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。freertos 就是通过在处理器处理空闲任务的时候将处理器设置为低功耗模式来降低能耗。一般会在空闲任务的钩子函数中执行低功耗相关处理,比如设置处理器进入低功耗模式、关闭其他外设时钟、降低系统主频等等。
我们知道 freertos 的系统时钟是由滴答定时器中断来提供的,系统时钟频率越高,那么滴答定时器中断频率也就越高。以前讲过,中断是可以将 stm32f103 从睡眠模式中唤醒,周期性的滴答定时器中断就会导致 stm32f103 周期性的进入和退出睡眠模式。因此,如果滴答定时器中断频率太高的话会导致大量的能量和时间消耗在进出睡眠模式中,这样导致的结果就是低功耗模式的作用被大大的削弱。
为此,freertos 特地提供了一个解决方法——tickless 模式,当处理器进入空闲任务周期以后就关闭系统节拍中断(滴答定时器中断),只有当其他中断发生或者其他任务需要处理的时候处理器才会被从低功耗模式中唤醒。为此我们将面临两个问题:
问题一:关闭系统节拍中断会导致系统节拍计数器停止,系统时钟就会停止。
freertos 的系统时钟是依赖于系统节拍中断(滴答定时器中断)的,如果关闭了系统节拍中断的话就会导致系统时钟停止运行,这是绝对不允许的!该如何解决这个问题呢?我们可以记录下系统节拍中断的关闭时间,当系统节拍中断再次开启运行的时候补上这段时间就行了。这时候我们就需要另外一个定时器来记录这段该补上的时间,如果使用专用的低功耗处理器的话基本上都会有一个低功耗定时器,比如 stm32l4 系列(l 系列是 st 的低功耗处理器)就有一个叫做 lptim(低功耗定时器)的定时器。stm32f103 没有这种定时器那么就接着使用滴答定时器来完成这个功能,具体实现方法后面会讲解。
问题二:如何保证下一个要运行的任务能被准确的唤醒?
即使处理器进入了低功耗模式,但是我的中断和应用层任务也要保证及时的响应和处理。中断自然不用说,本身就可以将处理器从低功耗模式中唤醒。但是应用层任务就不行了,它无法将处理器从低功耗模式唤醒,无法唤醒就无法运行!这个问题看来很棘手,既然应用层任务无法将处理器从低功耗模式唤醒,那么我们就借助其他的力量来完成这个功能。如果处理器在进入低功耗模式之前能够获取到还有多长时间运行下一个任务那么问题就迎刃而解了,我们只需要开一个定时器,定时器的定时周期设置为这个时间值就行了,定时时间到了以后产生定时中断,处理器不就从低功耗模式唤醒了。这里似乎又引出了一个新的问题,那就是如何知道还有多长时间执行下一个任务?这个时间也就是低功耗模式的执行时间,值得庆辛的是 freertos已经帮我们完成了这个工作。
8月西安:福创西部论坛解析最新无线与电力电子方案
第十五届中国安防论坛技术论坛于第十七届CPSE安博会期间在深圳举行
脑机接口的现状和未来
山西联通举办全民免费大测速为“三千兆”服务及智能应用发展助力
华为鸿蒙系统或于明年完全替代安卓
FreeRTOS如何降低功耗
电池需要做CCC认证啦!电池CCC认证将强制实施
这个控制LED的经典算法 你会用吗?
MAX34461 16通道系统监视器
有什么情人节可以送男友的耳机?男生喜欢的蓝牙耳机推荐
柴油机动车J1939转RS232运行数据串口(UART)标准
Cassie Cal双足机器人,脚踩“悬浮鞋”在校园内“兜风”!
Linux发行版开发者加大宣传,为了Windows 7存量用户
食品分析仪器有哪些,其检测项目主要有哪几类
新的口罩材料可以有效去除病毒大小的纳米颗粒
5G领域人才紧缺,vivo上线5G公开课助力学术到产业融合发展
Facebook获基于智能手机的3D手势专利
电解电容怎么测量好坏
意法半导体增强ST25DV双接口NFC标签性能 提高应用灵活性和读写速度
以6G为代表的新一代移动通信具备的特征