打印
[STM32L0]

STM32L051使用WakeUpTimer唤醒模式,待机过程意外唤醒后,如何确定RTC时间剩余

[复制链接]
485|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinyi7016|  楼主 | 2025-3-19 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32L051单片机

HAL_RTCEx_SetWakeUpTimer_IT设置唤醒时间后,进行待机模式,
其他方式(如wkup引脚,复位等)唤醒后,RTC设置的时间还没有到,这时要判断还剩下多少时间才会到唤醒时间。
如何获取RTC设置的唤醒时间还有多少?是哪个寄存器,或是HAL库的哪个函数呢。

使用特权

评论回复
沙发
jinyi7016|  楼主 | 2025-3-19 11:17 | 只看该作者
HAL_RTCEx_GetWakeUpTimer,这个函数,是读取WUTR寄存器的值,但是这个值是不变的,无法指示剩余多长时间。

使用特权

评论回复
板凳
Wordsworth| | 2025-3-21 08:02 | 只看该作者
注意,STM32L0的RTC唤醒计时器与RTC时钟有关,所以确保你在配置时清楚了解时钟源,以便正确读取剩余时间。

使用特权

评论回复
地板
Bblythe| | 2025-3-21 08:03 | 只看该作者
对于实时操作,你也可以考虑在唤醒后用定时器再次启动RTC,进行精准的时间计算。

使用特权

评论回复
5
Pulitzer| | 2025-3-21 08:05 | 只看该作者
如果唤醒后RTC时间没有触发,可以通过检测 RTC_ISR 中的其他标志位来判断是否是由于其他事件(如WKUP引脚或复位)引起的唤醒。

使用特权

评论回复
6
Uriah| | 2025-3-21 08:06 | 只看该作者
如果你使用了待机模式,并且其他外部因素导致唤醒,可以通过适当的中断处理逻辑来重新启动或继续计时。

使用特权

评论回复
7
Clyde011| | 2025-3-21 08:07 | 只看该作者
总之,获取剩余唤醒时间可以通过直接访问RTC寄存器,或者通过HAL_RTCEx_GetWakeUpTimer函数来方便快捷地获取。

使用特权

评论回复
8
公羊子丹| | 2025-3-21 08:09 | 只看该作者
可以通过读取 RTC_WakeUpTimer 相关的寄存器来判断剩余的唤醒时间。STM32的RTC模块提供了获取剩余时间的机制。

使用特权

评论回复
9
周半梅| | 2025-3-21 08:10 | 只看该作者
如果你使用了 HAL_RTCEx_SetWakeUpTimer_IT 来设置唤醒时间,可以在唤醒后读取 RTC_WUTR 寄存器来检查剩余的时间。

使用特权

评论回复
10
帛灿灿| | 2025-3-21 08:11 | 只看该作者
你也可以使用 HAL_RTCEx_GetWakeUpTimer 函数来获取唤醒计时器的当前状态。该函数返回当前计数值。

使用特权

评论回复
11
童雨竹| | 2025-3-21 08:12 | 只看该作者
对于唤醒时间的查询,通常会用到 RTC_WUTR 和 RTC_ISR 寄存器。你可以通过检查 RTC_ISR 中的 WUTF 标志来确认唤醒计时器是否已触发。

使用特权

评论回复
12
万图| | 2025-3-21 08:14 | 只看该作者
如果唤醒时间没有到达,可以通过 RTC_WUTR 寄存器读取当前剩余的计时周期。你可以将此值转换为秒或毫秒,具体取决于你的配置。

使用特权

评论回复
13
jinyi7016|  楼主 | 2025-3-21 08:41 | 只看该作者
Clyde011 发表于 2025-3-21 08:07
总之,获取剩余唤醒时间可以通过直接访问RTC寄存器,或者通过HAL_RTCEx_GetWakeUpTimer函数来方便快捷地获 ...

这个函数试过了,读取出来 的值 是不变的

使用特权

评论回复
14
jinyi7016|  楼主 | 2025-3-21 08:41 | 只看该作者
万图 发表于 2025-3-21 08:14
如果唤醒时间没有到达,可以通过 RTC_WUTR 寄存器读取当前剩余的计时周期。你可以将此值转换为秒或毫秒,具 ...

这个寄存器就是可以通过 函数HAL_RTCEx_GetWakeUpTimer来读取的,但值不变。

使用特权

评论回复
15
jinyi7016|  楼主 | 2025-3-21 08:42 | 只看该作者
帛灿灿 发表于 2025-3-21 08:11
你也可以使用 HAL_RTCEx_GetWakeUpTimer 函数来获取唤醒计时器的当前状态。该函数返回当前计数值。 ...

测试后,这个函数的返回值,就是设置的那个定时时间,不会变化,是固定的

使用特权

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

本版积分规则

143

主题

1396

帖子

12

粉丝