CH579 CH573 CH582 RTC喚醒喚醒操作


 

 非BLE工程設置RTC喚醒(BLE工程的睡眠喚醒由Tmos自己控制,用戶只要按照自己的要求添加任務就行,空閑是MCU會自動睡眠,該執行任務時RTC會喚醒MCU執行任務)

非BLE工程設置RTC喚醒如下

使用外部32K設置RTC喚醒

  LClk32K_Select(Clk32K_LSE);//啟用外部32K
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
  R8_CK32K_CONFIG |= RB_CLK_XT32K_PON;  //開啟外部32K電源
  R8_SAFE_ACCESS_SIG = 0;

  RTC_InitTime(2021,9,8,15,25,0);//初始化RTC
  RTC_TMRFunCfg(Period_1_S);//設置RTC定時觸發
  PFIC_EnableIRQ(RTC_IRQn);//開啟RTC中斷
       //PWR_UnitModCfg(DISABLE,0x1);
  PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_RTC_WAKE, Edge_LongDelay );//開啟RTC喚醒使能
  printf("Init RTC OK\r\n");


__attribute__((interrupt("WCH-Interrupt-fast"))) //RTC中斷
__attribute__((section(".highcode")))
void RTC_IRQHandler(void)
{
  UINT16 py; UINT16 pmon; UINT16 pd; UINT16 ph; UINT16 pm; UINT16 ps;
  RTC_GetTime(&py,&pmon,&pd,&ph,&pm,&ps);
    if (RTC_GetITFlag(RTC_TMR_EVENT)) {
        printf("%d年%d月%d日%d時%d分%d秒\r\n",py,pmon,pd,ph,pm,ps);
        RTC_ClearITFlag(RTC_TMR_EVENT);
    }
}

如果設置相對當前的RTC喚醒可以用 RTC_TRIGFunCfg( UINT32 cyc ) 函數

 

如果使用內部32K

  LClk32K_Select(Clk32K_LSI);//啟用內部32K
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
  R8_CK32K_CONFIG |= RB_CLK_INT32K_PON;
  R8_SAFE_ACCESS_SIG = 0;

 


免責聲明!

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



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