请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2100 工具/软件:Code Composer Studio
您好!
我已经编写了一个使用内部晶体用于 RTC 的代码。 在接收到一个外部中断(P1.3)后、它在打开 RTC 的情况下进入 LPM3.5。 如果我只输入 LPM、这个代码工作正常、但是当我输入 LPM3.5时、它不会在 RTC 后唤醒。 类似的代码适用于外部晶振。 在 LPM3.5期间内部晶振是否不工作?
此致、
Prudhvi Sagar
#define MODCOUNT (32-1)*20 int main (void) { WDTCTL = WDTPW | WDTHOLD; //配置 GPIO P1OUT = 0x00; P1DIR =~BIT3; P2OUT = 0x00; P2DIR = 0xFF; SYSCFG0 = FRWPPW; //启用 FRAM 写入访问 SYSCFG2 |= RTCCKSEL; PM5CTL0 &=~LOCKLPM5; IF (SYSRSTIV = SYSRSTIV_LPM5WU) //从 LPM3.5唤醒时,重新启动 { _enable_interrupt (); __no_operation(); __no_operation(); } 其他 {P2OUT ^= BIT1; P1REN = BIT3; P1IES = 0x00; P1IE = BIT3; P1IFG = 0x00;} _bis_SR_register (LPM3_bits | GIE); //输入 LPM3、启用中断 } #pragma vector=RTC_vector __interrupt void RTC_ISR (void) { 开关(__evo_in_range (RTCIV、RTCIV__RTCIFG)) { 案例 RTCIV_none:中断; //无中断 案例 RTCIV_RTCIFG: // RTC 溢出 P2OUT ^= BIT1; RTCCTL = RTCSS_1 | RTCSR | RTCPS__1024; //RTCCTL = RTCSS_XT1CLK | RTCSR | RTCPS__1024;//停止 RTC P1REN = BIT3; // P1.3下拉寄存器使能 P1IES = 0x00; // P1.3低边沿/高边沿 P1IE = BIT3; // P1.3中断被启用 _bis_SR_register_ON_EXIT (LPM3_BITS | GIE); 中断; 默认值:break; } } #pragma vector=Port1_vector __interrupt void Port_1 (void) { P2OUT ^= BIT1; P1IE = 0x00; P1IFG = 0x00; //清除 P1.3 IFG RTCMOD = MODCOUNT; RTCCTL = RTCSS_1 | RTCSR | RTCPS__1024 | RTCIE; PMMCTL0_H = PMMPW_H; //打开 PMM 寄存器进行写入 PMMCTL0_L |= PMMREGOFF; //并设置 PMMREGOFF _bis_SR_register_ON_EXIT (LPM3_BITS | GIE); }