yxiaoz 发表于 2025-11-20 12:03

STM32F103 低功耗STOP模式无法唤醒。

各位大佬,帮忙看一下,我有个程序,STM32F103C8T6,想用RTC的闹钟唤醒STOP模式,却不成功。测试进STOP模式前,RTC能够正常中断的,进了之后就不能够唤醒了。
进STOP前用下面的计算式记录各寄存器:
                              (((PWR->CR & 0x00000100) >> 8 )<<0) |
                                 (((RCC->BDCR & 0x00008000) >> 15)<<1) |   
                                 (((RCC->BDCR & 0x00000300) >> 8)<<2)|      
                                 (((RCC->BDCR & 0x00000002) >> 1)<<4)|   
                                 (((RTC->CRH & 0x00000002) >> 1)<<5)|         
                                 (((RTC->CRL & 0x00000002) >> 1)<<6)|         
                                 (((RTC->CRL & 0x00000001))<<7)|      
                                 (((EXTI->IMR & 0x00020000) >> 17)<<8)|   
                                 (((EXTI->EMR & 0x00020000) >> 17 )<<9)|   
                                 (((EXTI->PR & 0x00020000) >> 17)<<10)|                                          
                                 (((NVIC->ISER & 0x00000200) >> 9 )<<11)|
                                 (((NVIC->ISER & 0x00000008) >> 3 )<<12)

这个值记录下来是0x1137。RTC的ALRH/L寄存器和CNTH/L寄存器也记录过,进STOP前确实CNT小,在STOP里长时间后确实比ALRH/L大了,而且比较时间是在正常的计数的。
发现在STOP状态里,RTC虽然在继续计数,但是原本能够产生的闹钟中断标记ALRF和秒标记SECF都不再产生了。请问这是什么原因,还需要查哪些寄存器的设置?

yxiaoz 发表于 2025-11-20 12:06

最好谁提供一个RTC唤醒STOP的小例子可以让我比对一下寄存器。

duo点 发表于 2025-11-20 16:51

在STOP模式下,RTC的时钟源是否正确配置,并且是否在STOP模式下保持运行?

flycamelaaa 发表于 2025-11-20 17:52

EXTI的RTC唤醒线是否配置正确,NVIC中的中断是否使能。

jcky001 发表于 2025-11-20 18:52

LSE是否启用且稳定。

onlycook 发表于 2025-11-20 19:53

检查NVIC中RTC全局中断是否使能,并且优先级设置正确。

powerantone 发表于 2025-11-20 16:53

在进入STOP模式前,是否清除了所有相关的中断标志,以避免残留标志导致问题。

probedog 发表于 2025-11-20 21:54

可能因LSE晶振在低功耗模式下频率漂移或停振。

solty 发表于 2025-11-20 22:54

手动清除RTC_CRL的ALRF和SECF标志,以及EXTI_PR的PR20位

spicy 发表于 2025-11-20 17:15

若LSE晶振存在温漂,可启用STM32的RTC温度补偿功能,或通过软件算法动态调整闹钟时间。

stormwind123 发表于 2025-11-20 18:16

用最新的HAL库或标准外设

yxiaoz 发表于 2025-11-20 18:50

duo点 发表于 2025-11-20 16:51
在STOP模式下,RTC的时钟源是否正确配置,并且是否在STOP模式下保持运行?

保持运行的,用的LSE,通过强制停止程序,可以看到RTC计数器确实运行了对应的时间。

yxiaoz 发表于 2025-11-20 18:52

powerantone 发表于 2025-11-20 16:53
在进入STOP模式前,是否清除了所有相关的中断标志,以避免残留标志导致问题。 ...

清除了的。
现在是看到RTC模块本身的寄存器中断标记ALRF在STOP模式下就不会置起来了。而在STOP模式之外可以正常置了很多次的。

yxiaoz 发表于 2025-11-20 18:52

flycamelaaa 发表于 2025-11-20 17:52
EXTI的RTC唤醒线是否配置正确,NVIC中的中断是否使能。

都配置了的。

xch 发表于 2025-11-21 09:29

是不是山寨的103

pacer81 发表于 2025-11-21 12:08

EXTI line硬件唤醒能好用么,软件唤醒估计容易程序跑飞

wangwu1976@ 发表于 2025-11-22 08:50

观望
页: [1]
查看完整版本: STM32F103 低功耗STOP模式无法唤醒。