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.

[参考译文] CCS/MSP430FR2100:LPM3.5期间的内部 RTC

Guru**** 1624165 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/728702/ccs-msp430fr2100-internal-rtc-during-lpm3-5

器件型号: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);

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTCSS=1 (+RTCCKSEL)请求 ACLK (由 REFOCLK 提供)、这不在 LPMx.5中运行。

    根据用户指南(SLAU445H)秒 15.1、在 LPMx.5中运行 RTC 只能使用 XT1CLK 或 VLOCLK。 如果您没有外部晶体、剩下的就是 VLOCLK。

    请记住、VLOCLK 的标称值为10kHz、因此"1秒"延迟更像是3秒。