长春网站建设论坛,个人网站平台,盐城市城南建设局网站,南京网站优化目录
说明#xff1a;
一、低功耗模式简介
1.1、STM32低功耗模式
二、Tickless模式
2.1、Tickless模式如何功耗
2.2、Tickless模式设计思想
2.3、为了降低功耗#xff0c;又不影响系统运行#xff0c;怎么能做到呢#xff1f;
三、Tickless模式修改配置
3.1、配置…目录
说明
一、低功耗模式简介
1.1、STM32低功耗模式
二、Tickless模式
2.1、Tickless模式如何功耗
2.2、Tickless模式设计思想
2.3、为了降低功耗又不影响系统运行怎么能做到呢
三、Tickless模式修改配置
3.1、配置相关的宏定义
四、使用Tickless低功耗模式
4.1、使用步骤 说明 关于内容 1以下内容多为概念了解与步骤分析 2暂无个人示例代码使用的是FreeRTOS的官方示例代码 3若想移植代码测试的请移步其它地方寻找下文内容暂无个人示例代码供测试 关于其它 1操作系统win 10 2平台keil 5 mdk 3语言c语言 4板子STM32系列移植FreeRTOS 一、低功耗模式简介 很多应用场合对于功耗的要求很严格如可穿戴的手表、物理网低功耗产品等一般的MCU都有相应的低功耗模式裸机开发时可以使用MCU的低功耗模式。 FreeRTOS也提供了一个叫Tickless的低功耗模式方便带FreeRTOS操作系统的应用开发。 1.1、STM32低功耗模式
如下图1 图1 主要使用睡眠模式进入睡眠模式WFI指令_WFIWFE指令_WFE退出休眠模式任何中断或事件都可以唤醒睡眠模式 二、Tickless模式
2.1、Tickless模式如何功耗 本质是通过调用指令WIF实现睡眠模式。在执行空闲任务时进入睡眠模式。
2.2、Tickless模式设计思想 在任务运行时间统计实验中可以看出整个系统在运行过程中大部分时间是在运行空闲任务如下图2 图2
2.3、为了降低功耗又不影响系统运行怎么能做到呢 在空闲任务执行期间让MCU进入相应的低功耗模式当其他任务准备运行的时候唤醒MCU退出低功耗模式。
难点 1进入低功耗之后多久唤醒在下一个任务执行前如何准确唤醒MCU 2任何中断都可以唤醒MCU滴答定时器频繁中断会影响低功耗的效果1ms就中断一次
解决 1计算出任务阻塞时间 2使用滴答定时器的中断周期改为低功耗运行的时间在退出低功耗后需要补上系统时钟节拍。 令人开心的是FreeRTOS低功耗模式Tickless模式机制已经处理好了这些难点直接调用相关API函数使用即可。
三、Tickless模式修改配置
3.1、配置相关的宏定义 1configUSE_TICKLESS_IDLE--该宏定义用于使能低功耗Tickless模式1为使能0不使能其它值需要自己实现Tickless功能 2configEXPECTED_IDLE_TIME_BEFORE_SLEEP--该宏定义用于定义系统进入对应低功耗模式的最短时长至少为2个系统节拍也就是至少2ms 3configPRE_SLEEP_PROCESSINGx--该宏定义用于系统在进入低功耗前执行的事务如进入低功耗前关闭外设时钟以达到进一步降低低功耗目的 4configPOSR_SLEEP_PROCESSINGx--该宏定义用于系统在退出低功耗前执行的事务如退出低功耗前开启外设时钟以达到系统正常运行。
注意configPRE_SLEEP_PROCESSINGx与configPOSR_SLEEP_PROCESSINGx需要直行实现函数内部操作--给个宏定义到另一个函数在另一个函数实现即可。
四、使用Tickless低功耗模式
4.1、使用步骤 1配置相关宏定义 2实现两个函数configPRE_SLEEP_PROCESSING、configPOSR_SLEEP_PROCESSING在这两个函数中实现进一步的低功耗如关闭外部中断关闭定时器等