NXP: LPC54101 RTC WAKE-UP TIMER 毫秒级中断唤醒

-----致自己:预期感概路难行,不如马上出发

简介: LPC54101J512BD64, LPC SDK2.3.0 ,keil V5.06

 LPC5410x的RTC 有两个TIMER ,分别支持秒级 和ms级中断唤醒; 

      


    这里 我需要系统250ms唤醒一次;

    代码如下:

    

void RtcInit(void)
{
	 SYSCON->RTCOSCCTRL &= SYSCON_RTCOSCCTRL_EN_MASK;
    /* Init RTC */
    RTC_Init(RTC);  
	/* Enable rtc 1khz wakeup  for deep power mode */
	/* Enable RTC 1KHz clock */
	RTC->CTRL |= 0x60;	
    /* RTC time counter has to be stopped before setting the date & time in the TSR register */
    RTC_StopTimer(RTC);
    /* Enable RTC alarm interrupt */
    RTC_EnableInterrupts(RTC, RTC_CTRL_WAKEDPD_EN_MASK);
    /* Enable at the NVIC */
    EnableIRQ(RTC_IRQn);
    /* Start the RTC time counter */
    RTC_StartTimer(RTC);
}

void RTC_SetWakeUpTimer(unsigned int ms)
{
	RTC->WAKE = ms;	
}



void RTC_IRQHandler(void)
{
    if (RTC_GetStatusFlags(RTC) & kRTC_WakeupFlag)
    {
        /* Clear alarm flag */
        RTC_ClearStatusFlags(RTC,kRTC_WakeupFlag);
    }
/* 最终服务函数如下 */
void McuDeepSleep(unsigned int i)
{
    	RTC_SetWakeUpTimer(i);
	CLOCK_AttachClk(kIRC12M_to_MAIN_CLK);
	EnableDeepSleepIRQ(RTC_IRQn); 
	SYSCON->STARTERSET[0] |= SYSCON_STARTER_RTC_MASK; 	
	POWER_EnterPowerDown(APP_EXCLUDE_FROM_DEEPSLEEP); 
	DisableDeepSleepIRQ(RTC_IRQn);
        BOARD_BootClockPLL96M();	
}


    注意1:wake-up timer 计数到0后,需要手动重新加载,也就是每次进入系统休眠需要重新写入wakeup timer的计数值

    


注意2 :系统进入休眠需要保留RTC数据,所以在使用POWER_EnterPowerDown();需要在入口参数那里保留RTC;

也就是:

                #define APP_EXCLUDE_FROM_DEEPSLEEP                                                                           \
    (SYSCON_PDRUNCFG_PDEN_SRAM0A_MASK | SYSCON_PDRUNCFG_PDEN_SRAM0B_MASK |                             SYSCON_PDRUNCFG_PDEN_SRAM1_MASK | \
                             SYSCON_PDRUNCFG_PDEN_SRAM2_MASK | SYSCON_PDRUNCFG_PDEN_32K_OSC_MASK)

         POWER_EnterPowerDown(APP_EXCLUDE_FROM_DEEPSLEEP); 

注意点3: 在RTC_IRQHandler()中,需要清除wakeup 唤醒标志位 kRTC_WakeupFlag;

         

         

发布了13 篇原创文章 · 获赞 13 · 访问量 9945

猜你喜欢

转载自blog.csdn.net/qq_25920091/article/details/80554526
RTC