RTC唤醒中断突然不进中断了,咋回事啊?
代码一开始还能跑进中断,运行几次就没动静了,是不是我哪里忘了清标志位?我以前遇到是因为进了STOP模式但唤醒源没配对。 是不是没清中断标志位? 你有重新启动RTC吗? 有时候进低功耗模式前配置会失效。 RTC的唤醒时间是对的吗? 看下NVIC中断是不是被关闭了。 会不会跑偏了?加个LED看看逻辑。 有没有别的中断打断RTC唤醒? 你用的内部LSE还是LSI?稳吗? 是不是唤醒后还没跳回主循环? LSE(低速外部晶振)或LSI(低速内部RC振荡器)未正确启动或不稳定,导致RTC功能失效 检查LSE或LSI是否启用并稳定运行。若使用LSE,需确认其频率是否满足RTC需求;若使用LSI,需确认其是否已正确配置 唤醒引脚未正确设置为上升沿或下降沿触发,导致中断无法触发。确保唤醒引脚已正确配置为GPIO输入,并设置适当的触发条件 可能是RTC中断寄存器(RTC_CR)中的相应位和NVIC中的中断使能未正确配置。确保RTC_CR寄存器中的相应位(如ALRAE、ALRAIE等)和NVIC中的中断使能已正确设置 中断触发后,相应的标志位必须手动清除,否则系统会认为中断一直处于触发状态,从而阻止后续中断的触发。在中断服务函数的开始,确保手动清除中断标志位,防止重复触发 一般是中断优先级设置不当,可能导致中断被其他高优先级中断抢占或丢失。检查并合理设置中断优先级,确保RTC唤醒中断的优先级足够高,能够被及时响应 系统复位或进入低功耗模式可能清除RTC状态或中断标志位,导致中断无法触发。检查系统是否经历了复位或进入了低功耗模式,并相应地重新配置RTC和中断 RTC寄存器位于备份域中,访问前必须解锁。若忽略此步骤,可能导致RTC配置未能生效。在进入待机模式前,解锁并初始化备份域寄存器 在中断服务函数内使用阻塞性的延时、修改全局变量时未加锁等,都可能引起意想不到的错误。避免在中断服务函数内使用阻塞性延时,如果需要访问共享资源,使用适当的同步机制,如互斥锁
页:
[1]