打印
[开发工具]

如何在 FreeRTOS 中通过无滴答模式实现低功耗支持

[复制链接]
544|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-10-29 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,

我现在使用 Board NUCLEO-U031R8 进行测试。

我有一个旧的 FreeRTOS 项目,专为节能应用而设计,我正准备将其迁移到新的 IC STM32U031 系列 MCU。

在旧项目中,将configUSE_TICKLESS_IDLE设置为1可以让系统在任务空闲时进入低功耗模式,并且由制造商提供低功耗支持功能。

所以我开始使用STM32CubeMX创建一个简单的项目并安装“X-CUBE-FREERTOS”中间件(CMSIS RTOS2),并将configUSE_TICKLESS_IDLE设置为1。然后使用STM32CubeIDE导入.ioc文件,最后添加长时间LED闪烁任务以确保系统进入无滴答空闲模式。

LED 按预期运行,但我注意到电流消耗平均约为 5mA,这表明低功耗功能可能无法按预期运行。我是否遗漏了什么或错误的理解?

是否有推荐的方法在 FreeRTOS 中实现具有无滴答功能的低功耗模式?

使用特权

评论回复
沙发
tpgf| | 2024-11-4 16:41 | 只看该作者
在FreeRTOSConfig.h文件中,将宏configUSE_TICKLESS_IDLE设置为1

使用特权

评论回复
板凳
keaibukelian| | 2024-11-5 08:04 | 只看该作者
确保滴答定时器的重装载值不会溢出,即不能超过滴答定时器的最大计数值

使用特权

评论回复
地板
elephant00| | 2024-11-5 10:45 | 只看该作者
修改FreeRTOSConfig.h文件将configUSE_TICKLESS_IDLE宏定义为1,以启用无滴答空闲模式。

使用特权

评论回复
5
八层楼| | 2024-11-5 15:08 | 只看该作者
configEXPECTED_IDLE_TIME_BEFORE_SLEEP定义了系统可以进入低功耗模式的最小时钟节拍数,默认值为2个系统时钟节拍,如果需要,可以在[size=0.875]FreeRTOSConfig.h文件中重新定义这个参数

使用特权

评论回复
6
观海| | 2024-11-5 18:01 | 只看该作者
FreeRTOS提供了[size=0.875]portSUPPRESS_TICKS_AND_SLEEP()函数来实现Tickless模式

使用特权

评论回复
7
guanjiaer| | 2024-11-5 19:48 | 只看该作者
如果滴答定时器的频率太高,会导致频繁的进出睡眠模式,从而增加能量消耗

使用特权

评论回复
8
heimaojingzhang| | 2024-11-5 21:37 | 只看该作者
确保下一个要运行的任务能够被准确唤醒

使用特权

评论回复
9
哈根达斯uz| | 2024-11-14 22:52 | 只看该作者
所以我开始使用STM32CubeMX创建一个简单的项目并安装“X-CUBE-FREERTOS”中间件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

440

主题

1669

帖子

1

粉丝