网络云网站,小企业网站建设系统哪个好,wordpress政企网站,wordpress 调查本篇为#xff1a;FreeRTOS Tickless 低功耗模式篇 一、低功耗模式简介
1、低功耗介绍
答#xff1a; 很多应用场合对于功耗的要求很严格#xff0c;比如可穿戴低功耗产品、物联网低功耗产品等#xff1b;一般MCU都有相应的低功耗模式#xff0c;裸机开发时可以使用MCU的…本篇为FreeRTOS Tickless 低功耗模式篇 一、低功耗模式简介
1、低功耗介绍
答 很多应用场合对于功耗的要求很严格比如可穿戴低功耗产品、物联网低功耗产品等一般MCU都有相应的低功耗模式裸机开发时可以使用MCU的低功耗模式。 FreeRTOS也提供了一个叫Tickless的低功耗模式方便带FreeRTOS操作系统的应用开发。
两者的区别 第一种是针对于裸机的在裸机环境上是不涉及一些线程的保护。而FreeRTOS是存在线程的所以FreeRTOS的Tickless为了防止某些操作或者其他任务打断是有线程保护的。 二、Tickless模式详解
1、STM32低功耗模式
答 STM32低功耗模式有3种分别是睡眠模式、停止模式、待机模式。 在FreeRTOS中主要使用的是睡眠模式
进入睡眠模式 WFI 指令(_WFI )、WFE 指令(_WFE) 。退出睡眠模式任何中断或事件都可以唤醒睡眠模式。 2、Tickless模式如何降低功耗
答 Tickless低功耗模式的本质是通过调用指令 WFI 实现睡眠模式
3、为什么要有Tickless模式
答 任务运行时间统计实验中可以看出在整个系统的运行过程中其实大部分时间是在执行空闲任务。 空闲任务是在系统中的所有其他任务都阻塞或挂起时才运行的。
4、为了可以降低功耗又不影响系统运行该怎么做
答 可以在本该空闲任务执行的期间让MCU 进入相应的低功耗模式当其他任务准备运行的时候唤醒MCU退出低功耗模式。
难点
进入低功耗之后多久唤醒也就是下一个要运行的任务如何被准确唤醒。任何中断均可唤醒MCU若滴答定时器频繁中断则会影响低功耗的效果
解决 将滴答定时器的中断周期修改为低功耗运行时间退出低功耗后需补上系统时钟节拍数。
值得庆幸的是FreeRTOS 的低功耗 Tickless 模式机制已经处理好了这些难点。
三、Tickless模式相关配置项
1、Tickless模式配置
答
configUSETICKLESSIDLE 此宏用于使能低功耗 Tickless 模式 。正常使用配置为1。
configEXPECTEDIDLETIMEBEFORESLEEP 此宏用于定义系统进入相应低功耗模式的最短时长。需要配置为2的值2ms
configPRESLEEPPROCESSING(x) 此宏用于定义需要在系统进入低功耗模式前执行的事务如进入低功耗前关闭外设时钟以达到降低功耗的目的。
configPOSRSLEEPPROCESSING(x) 此宏用于定义需要在系统退出低功耗模式后执行的事务如退出低功耗后开启之前关闭的外设时钟以使系统能够正常运行。
2、需要系统运行低功耗模式需满足以下几个条件
答
在 FreeRTOSConfig.h 文件中配置宏定义 configUSETICKLESSIDLE 为 1 。满足当前空闲任务正在运行所有其他任务处在挂起状态或阻塞状态。当系统可运行于低功耗模式的时钟节拍数大于等于configEXPECTEDIDLETIMEBEFORESLEEP该宏默认为2个系统时钟节拍)。
3、若想系统进入低功耗时功耗达到最低
答
在进入睡眠模式前可以关闭外设时钟、降低系统主频等进一步降低系统功耗(调用函数configPRESLEEPRPOCESSING()需自行实现该函数的内部操作)。退出睡眠模式后开启前面所关闭的外设时钟、恢复系统时钟主频等(退出睡眠模式后开启前面所关闭的外设时钟、恢复系统时钟主频等)。