张裕 发表于 2024-8-20 19:06:23

【STM32 FreeRTOS】Tickless低功耗模式

STM32低功耗模式

https://i-blog.csdnimg.cn/blog_migrate/8c8d65be8281f6f4b73094972c0bd423.png
STM32 提供了 3 种低功耗模式,以到达不同层次的低落功耗的目标


[*]就寝模式(内核停止工作,外设仍在运行)
[*]停止模式(所偶然钟都停止)
[*]待机模式( 1.8 V 内核电源关闭)
FreeRTOS主要利用的就寝模式进入低功耗模式。
Tickless低功耗模式

如何低落功耗

Tickless低功耗模式的本质是通过调用指令WFI进入就寝模式!
Tickless模式的设计头脑

在任务运行时间统计实验中,我们可以看出,实在大部门时间都是在实行空闲任务。
可以在本该空闲任务实行的期间,让MCU进入相应的低功耗模式;当其他任务准备运行的时候,叫醒MCU退出低功耗模式。
难点:
1、进入低功耗模式后,多久叫醒?也就是下一个要运行的任务如何被正确叫醒。
2、任何停止均可叫醒MCU,若滴答定时器频繁停止则会影响低功耗的结果。
可以将滴答定时器的停止周期修改为低功耗运行时间,退出低功耗后,需不上体系时钟节奏数。值得庆幸的是:FreeRTOS的低功耗Tickless模式机制已经处理好了这些难点。
Tickless模式相关设置项

configUSE_TICKLESS_IDLE
此宏定义用于使能低功耗Tickless模式,设置1体现利用体系定义好的函数,设置2体现自定义函数
configEXPECTED_IDLE_TIME_BEFORE_SLEEP
此宏定义用于定义体系进入相应低功耗模式的最短时长,默认设置为2
configPRE_SLEEP_PROCESSING(x)
此宏用于定义需要再体系进入低功耗模式前实行的事务,如:进入低功耗前关闭外设时钟,以到达低落功耗的目标。
configPOST_SLEEP_PROCESSING
此宏用于定义需要再退出低功耗模式后实行的事务,如:退出低功耗模式后开启之前关闭的外设时钟。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【STM32 FreeRTOS】Tickless低功耗模式