退出低功耗后的操作

2019-07-19 13:10发布

FR572X系列
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
wyjie
2019-07-19 17:30
我需要实现RTC唤醒进入LPM3.5的单片机,但是不知道该怎样写,退出后是复位从主程序的开始处执行吗?
#include "driverlib.h"
void main(void)
{
    WDT_A_hold(WDT_A_BASE);//停止看门狗    Gpio_Init();
    Systerm_Clock_Config();
    set_rtc_default();//
    rtc_alarm_set(CALENDAREVENT,defaultTime,RTC_B_CALENDAREVENT_MINUTECHANGE);//设置RTC每分钟的中断事件模式,并开启中断
   RTC_B_startClock(RTC_B_BASE);//开启RTC_B
  while(1)
  {
        Gpio_Init();//初始化I/O口到通用I/O            PMM_lockLPM5();
            PMM_regOff();//关闭核心电压供电模块
            __bis_SR_register(LPM4_bits + GIE);//进入LPM3.5休眠模式
      __no_operation();

  }

}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=RTC_VECTOR
__interrupt
#elif defined(__GNUC__)
__attribute__((interrupt(RTC_VECTOR)))
#endif
void RTC_B_ISR(void)
{
        switch (__even_in_range(RTCIV, 16)) {
        case 0: break;  //No interrupts
        case 2://RTCRDYIFG
                   //__no_operation();
                   //PMM_regOn();//
                   //__bic_SR_register_on_exit(LPM4_bits);
                   //__bic_SR_register_on_exit(LPM0_bits);
                   break;
        case 4:    //RTCEVIFG
               __bic_SR_register_on_exit(LPM4_bits);//退出LPM4,退出后程序跳到哪里呢?????????我的原来意思是跳到
                break;
        case 6:break;//RTCAIFG
        case 8: break;  //RT0PSIFG
        case 10: break; //RT1PSIFG
        case 12: break; //Reserved
        case 14: break; //Reserved
        case 16: break; //Reserved
        default: break;
        }
}
退出LPM4,退出后程序跳到哪里呢?我的理解是跳到while(1)循环里面的“__bis_SR_register(LPM4_bits + GIE);//进入LPM3.5休眠模式”之后继续执行,是这样吗?

一周热门 更多>