打印
[STM32F4]

如何在 FREE RTOS 中为配置睡眠模式

[复制链接]
360|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvluoo|  楼主 | 2025-3-16 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 STM32F413ZH Discover 板上跑 FREE RTOS 。现在一直在尝试实现低功耗模式。启用了宏 configUSE_TICKLESS_IDLE 为 1。无法进入低功耗模式。
也用HAL_PWR_EnterSLEEPMODE函数测试,也无法睡眠模式。如何在 FREE RTOS 中为配置睡眠模式。

使用特权

评论回复
沙发
Wordsworth| | 2025-3-22 07:46 | 只看该作者
查看 FreeRTOS 的 Tick 定时器,确保 FreeRTOS 的时钟是正确配置的,否则可能导致低功耗模式无法触发。可以试着在 vPortSuppressTicksAndSleep 函数中调试一下。

使用特权

评论回复
板凳
Bblythe| | 2025-3-22 07:47 | 只看该作者
确认 FreeRTOS 的堆栈设置,一些系统设置可能会影响低功耗模式,尝试查看 configTOTAL_HEAP_SIZE 是否合理,确保堆栈空间不会影响系统的运行。

使用特权

评论回复
地板
Pulitzer| | 2025-3-22 07:48 | 只看该作者
检查是否正确进入空闲钩子,可以在 vApplicationIdleHook() 中加入调试信息,确认是否到达该函数。如果没有到达,可能是 FreeRTOS 配置问题。

使用特权

评论回复
5
Uriah| | 2025-3-22 07:49 | 只看该作者
检查 HAL 库和 FreeRTOS 版本,某些 STM32 HAL 库的版本可能与 FreeRTOS 不兼容,导致低功耗模式无法正常进入,建议检查是否是库的兼容性问题。

使用特权

评论回复
6
Clyde011| | 2025-3-22 07:50 | 只看该作者
调试低功耗模式,可以通过查看系统电压和功耗变化来验证是否进入低功耗模式。可以用示波器观察电源线路,查看功耗是否减少。

使用特权

评论回复
7
公羊子丹| | 2025-3-22 07:51 | 只看该作者
确认 Tickless 模式是否启用,确保 configUSE_TICKLESS_IDLE 真的设置为 1,同时检查 configTICK_RATE_HZ 的值是否合理,低于 1000 可以帮助降低功耗。

使用特权

评论回复
8
周半梅| | 2025-3-22 07:52 | 只看该作者
检查低功耗模式配置,在 STM32F413ZH 的 HAL_PWR_EnterSLEEPMODE 之前,确保已经调用 HAL_PWR_EnableSleepOnExit() 来允许进入睡眠模式。

使用特权

评论回复
9
童雨竹| | 2025-3-22 07:53 | 只看该作者
确认 vApplicationIdleHook() 是否正确实现,在该钩子函数里,FreeRTOS 会调用系统的低功耗模式代码。可以尝试添加一个简单的调用 HAL_PWR_EnterSLEEPMODE() 来测试。

使用特权

评论回复
10
帛灿灿| | 2025-3-22 07:54 | 只看该作者
使用低功耗 API 而不是 HAL 函数,尝试使用 HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI) 来测试是否能进入睡眠模式。

使用特权

评论回复
11
万图| | 2025-3-22 07:55 | 只看该作者
检查系统时钟配置,高频率的时钟可能会影响低功耗模式,确认时钟树配置合适,以便系统能够有效地进入低功耗状态。

使用特权

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

本版积分规则

11

主题

12

帖子

0

粉丝