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;

浙公网安备 33010602011771号