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

[复制链接]
217|15
yxiaoz 发表于 2025-11-20 12:03 | 显示全部楼层 |阅读模式
各位大佬,帮忙看一下,我有个程序,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[1] & 0x00000200) >> 9 )<<11)|  
                                   (((NVIC->ISER[0] & 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硬件唤醒能好用么,软件唤醒估计容易程序跑飞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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