This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请问MSP430F5529,LPM3睡眠后,RTC中断里未唤醒前的代码是由谁执行的?

代码示例:(环境是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;
}
}

  • 低功耗执行的一个过程:程序从main函数入口开始执行程序,当遇到进入低功耗程序时,如:_BIS_SR(LPM1_bits + GIE);此时相当于下面的程序处于停止状态不再执行,当有一个中断来到,则会进入中断处理程序,自动退出低功耗,如果在中断中没有没有退出低功耗,当中断服务程序执行完成后,又会重新进入低功耗。

    刚从网上找的,好像是这个道理

  • 低功耗执行的一个过程:程序从main函数入口开始执行程序,当遇到进入低功耗程序时,如:_BIS_SR(LPM1_bits + GIE);此时相当于下面的程序处于停止状态不再执行,当有一个中断来到,则会进入中断处理程序,自动退出低功耗,如果在中断中没有没有退出低功耗,当中断服务程序执行完成后,又会重新进入低功耗。

    刚从网上找的,好像是这个道理!

  • 能者自答,赞

  • XIAO CHU 说:

    低功耗执行的一个过程:程序从main函数入口开始执行程序,当遇到进入低功耗程序时,如:_BIS_SR(LPM1_bits + GIE);此时相当于下面的程序处于停止状态不再执行,当有一个中断来到,则会进入中断处理程序,自动退出低功耗,如果在中断中没有没有退出低功耗,当中断服务程序执行完成后,又会重新进入低功耗。

    刚从网上找的,好像是这个道理!

    理解正确