如何在断电时进入 LPM3模式
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.
#include "driverlib.h"
#include
日历当前时间;
字符时间[10]、日期[12];
字符 SEC_OK;
uint16_t PWROFF、mnth、YER;
int main (空)
{
WDT_A_HOLD (WDT_A_base);
PMM_unlockLPM5 ();
init_ports();
init_clocks();
lcd_init();
init_adc();
IF (SYSRSTIV = SYSRSTIV_LPM5WU)
{
RTC_C_clearInterrupt (RTC_C_base、RTC_C_CLOCK_READ_READY_INTERRUPT|RTC_C_Oscillator_FAULT_INTERRUPT);
RTC_C_enableInterrupt (RTC_C_base、RTC_C_CLOCK_READ_READY_READY_INTERRUPT|RTC_C_osc_osc_oscillator_FAULT_INTERRUPT);
RTC_C_startClock (RTC_C_base);
}
SET_TIME_AND_ALRM ();
_bis_SR_register (GIE);
Sec_OK = 0;
PWROFF = 0;
while (1)
{
if (PWROFF = 0)
{
if (SEC_OK = 1)
{
//ADC 测量输入
CurrentTime = RTC_C_getCalendarTime (RTC_C_BASE);
}
}
其他
{
_bis_SR_register (LPM3_bits | GIE);
}
}
}
#pragma vector=RTC_vector
_interrupt void RTC_ISR (void)
{
switch (__event_in_range (RTCIV、16))
{
案例 RTCIV_NONE:中断;//无中断
案例 RTCIV_RTCOFIFG:中断;//RTCOFIFG
案例 RTCIV_RTCRDYIFG://RTCRDYIFG
Sec_OK = 1;
中断;
案例 RTCIV_RTCTEVIFG://RTCEVIFG
//每分钟中断一次
__no_operation();
中断;
案例 RTCIV_RTCAIFG://RTCAIFG
__no_operation();
中断;
案例 RTCIV_RT0PSIFG:
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
中断;//RT0PSIFG
案例 RTCIV_RT1PSIFG:
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
中断;//RT1PSIFG
默认值:break;
}
}
#pragma vector=Port1_vector
_interrupt void RTC_intial (void)
{
if (GPIO_getInterruptStatus (GPIO_PORT_P1、GPIO_PIN1))
{
GPIO_clearInterrupt (GPIO_PORT_P1、GPIO_PIN2);
PWROFF = 1;
}
if (GPIO_getInterruptStatus (GPIO_PORT_P1、GPIO_PIN1))
{
GPIO_clearInterrupt (GPIO_PORT_P1、GPIO_PIN2);
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
}
}
从上面开始、我提供了一个带有二极管的备用电池、连接到 DVCC
以及在上电时触发 P1.1和在断电时触发 P1.2的电路
我的问题是、当我按下复位按钮时、RTC 寄存器变为复位 、即 RTC 不会继续从之前的模式运行