STM32 RTC上的喚醒和鬧鍾


RTC很簡單只要給備用電,RTC就會不停,可以進行設置和讀時間。同時在RTC上也涉及了鬧鍾(EXTI_17:RTC_FLAG_ALRAF,相當於RTC的定時器,鬧鍾到了之后進行異步操作)和喚醒中斷(低功耗模式下的操作EXTI_22:RTC_IT_WUT)。

如果PA0上有開關信號喚醒EXIT_Line0,同時也有RTC的喚醒中斷EXTI_22需要清除2個中斷標記RTC_IT_WUT和EXTI_Line20。

void RTC_WKUP_IRQHandler(void)
{  

  if(RTC_GetITStatus(RTC_IT_WUT) != RESET)
  {
    RTC_ClearITPendingBit(RTC_IT_WUT);
  }
  EXTI_ClearITPendingBit(EXTI_Line20);

}

void EXTI0_IRQHandler(void) //中斷0 喚醒 ;
{
  EXTI_ClearITPendingBit(EXTI_Line0);
}

https://blog.csdn.net/licent9420/article/details/79828381

int main()

{

    DelayInit();    //延時初始化

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR時鍾

    if(PWR_GetFlagStatus(PWR_FLAG_SB))  //從待機模式喚醒,清除相應標志位 

    {

        PWR_ClearFlag(PWR_FLAG_SB);

        PWR_ClearFlag(PWR_FLAG_WU);

    }

    OLED_Init();

    RtcInit(); 

    while(1)    {

        OLED_8x16StrP(0,0,"Runing...");         //液晶提示在運行中

        DelayS(2);                              //延時2秒

        RtcWakeUpConfig();                      //RTC wakeup 配置:間隔500ms自動喚醒

//      PWR_WakeUpPinCmd(PWR_WakeUpPin_1,ENABLE);  //Periodic auto-wakeup不需要外部喚醒管腳,故不需要這句,喚醒可以通過RTC或外部喚醒引腳PA0喚醒。因此喚醒時要區別是何種方式喚醒。

        PWR_EnterSTANDBYMode();   //進入待機(STANDBY)模式     

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM