[STM32G0] 休眠后无法唤醒的问题

[复制链接]
960|10
 楼主| aton1986 发表于 2025-2-28 10:14 | 显示全部楼层 |阅读模式
RT, RTC, tc, ck, bi, TI
设置唤醒的代码如下:
  1. HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
  2. HAL_Delay(1);
  3. //设置唤醒时间计数器
  4. if(HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, sleep_time-1, RTC_WAKEUPCLOCK_CK_SPRE_16BITS)!= HAL_OK){
  5.        printf("设置新休眠时间失败\r\n");
  6.   }

当使用RTC_WAKEUPCLOCK_CK_SPRE_16BITS时,单片机休眠后可以在指定的时间内唤醒,但如果改成RTC_WAKEUPCLOCK_CK_SPRE_17BITS其他参数都不变的情况下,单片机无法在指定时间唤醒,这种情况是怎么回事,有人晓得不,因为需要休眠时间超过18小时,16bit位不够,所以需要改成17bit
淡漠安然 发表于 2025-3-13 01:03 | 显示全部楼层
你遇到的问题与RTC唤醒定时器的配置和时钟源选择有关

一秒落纱 发表于 2025-3-13 02:32 | 显示全部楼层
RTC唤醒定时器的时钟源可以通过 RTC_WAKEUPCLOCK_xxx 参数来配置

冰春彩落下 发表于 2025-3-13 03:29 | 显示全部楼层
16位:最大计数值为 2^16 - 1 = 65535,最大唤醒时间为 65535秒(约18.2小时)。17位:最大计数值为 2^17 - 1 = 131071,最大唤醒时间为 131071秒(约36.4小时)。

三生万物 发表于 2025-3-13 04:21 | 显示全部楼层
当使用 RTC_WAKEUPCLOCK_CK_SPRE_17BITS 时,单片机无法在指定时间唤醒,可能是某些单片机的RTC模块可能不支持17位或18位的唤醒定时器。请查阅你的单片机数据手册,确认RTC模块是否支持17位配置。

江河千里 发表于 2025-3-13 05:04 | 显示全部楼层
17位和18位的配置可能需要额外的寄存器设置。例如,某些单片机需要配置 RTC_CR 寄存器中的 WUCKSEL 位。

夜阑风雨 发表于 2025-3-13 06:44 | 显示全部楼层
如果RTC的慢速时钟(1 Hz)不稳定或未正确配置,可能导致唤醒定时器无法正常工作。

远山寻你 发表于 2025-3-13 07:13 | 显示全部楼层
确保RTC唤醒中断已正确启用,并且中断服务程序(ISR)已实现。

光辉梦境 发表于 2025-3-13 08:32 | 显示全部楼层
查阅单片机数据手册,确认RTC模块是否支持17位或18位的唤醒定时器。

暖了夏天蓝了海 发表于 2025-3-13 09:22 | 显示全部楼层
检查时钟源,确保RTC的慢速时钟(1 Hz)已正确配置并稳定运行。

别乱了阵脚 发表于 2025-3-13 10:11 | 显示全部楼层
如果你将时钟源从 RTC_WAKEUPCLOCK_CK_SPRE_16BITS 改为 RTC_WAKEUPCLOCK_CK_SPRE_17BITS,但 sleep_time 的值没有相应调整,可能会导致唤醒时间超出预期。确保 sleep_time 的值在17位计数器的范围内(0131071

您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部