代码示例:(环境是IAR,红色部分代码是由谁执行的?CPU吗?(好像只能是CPU)时钟用的是ACLK?)现在的测试情况是:P2^1每秒反转一次,整个系统每4秒唤醒一次
//RTC中断
#pragma vector = RTC_VECTOR
__interrupt void RTC_ISR(void)
{
switch (__even_in_range(RTCIV, RTC_RT1PSIFG))
{
// Vector RTC_NONE: No Interrupt pending
case RTC_NONE:
break;
// Vector RTC_RTCRDYIFG: RTC ready
case RTC_RTCRDYIFG://1秒钟一个中断,可读中断
P2OUT ^= BIT1;
if(RTCSEC%4 == 2)//间隔4秒钟条件成立一次,退出LPM3
{
para.U4SFlag = 1;
__bic_SR_register_on_exit(LPM3_bits);
}
break;
// Vector RTC_RTCTEVIFG: RTC interval timer
case RTC_RTCTEVIFG://00——1分钟一个中断或者01——1个小时或02——Every day at midnight (00:00)或03——Every day at noon (12:00)
para.timeflag = 1;
__bic_SR_register_on_exit(LPM3_bits);
break;
// Vector RTC_RTCAIFG: RTC user alarm
case RTC_RTCAIFG://闹钟中断,可设
break;
// Vector RTC_RT0PSIFG: RTC prescaler 0
case RTC_RT0PSIFG://7.8ms一个中断128Hz,可设,改变分频RT0IP_0...7,基于32768Hz
break;
// Vector RTC_RT1PSIFG: RTC prescaler 1
case RTC_RT1PSIFG: //0.5秒一个中断,可设,改变分频RT1IP_0...7,基于RT0
break;
default:
break;
}
}