fix: 修复RTC闹钟中断风暴导致设备假死

1. 关闭未使用的闹钟中断(Rtc_AlmIeCmd改为FALSE)
2. Rtc_IRQHandler增加闹钟标志清除,防止残留标志引发中断死循环
This commit is contained in:
2026-07-29 14:54:13 +08:00
parent be6f52fa8b
commit a296a263b2
+4 -2
View File
@@ -1,4 +1,4 @@
#include <time.h>
#include <time.h>
#include <math.h>
#include "sysctrl.h"
#include "gpio.h"
@@ -303,7 +303,7 @@ void RTCInit(uint8_t sec)
RtcInitStruct.rtcCompen = RtcCompenEnable;
RtcInitStruct.rtcCompValue = 0; //补偿值 根据实际情况进行补偿
Rtc_Init(&RtcInitStruct);
Rtc_AlmIeCmd(TRUE); //使能闹钟中断
Rtc_AlmIeCmd(FALSE); //关闭闹钟中断(未使用)
EnableNvic(RTC_IRQn, IrqLevel3, TRUE); //使能RTC中断向量
Rtc_Cmd(TRUE); //使能RTC开始计数
Rtc_StartWait(); //启动RTC计数,如果要立即切换到低功耗,需要执行此函数
@@ -813,6 +813,8 @@ void Uart0_IRQHandler(void)
void Rtc_IRQHandler(void)
{
if(Rtc_GetAlmItStatus() == TRUE)
Rtc_ClearAlmItStatus();
if(Rtc_GetPridItStatus() == TRUE) {
Rtc_ClearPrdfItStatus(); //清除中断标志位
RtcIRQHander();