大家好、
我在我的产品中使用 MSP430F5659、我将获得更新的日期和时间、而主电源可用(纽扣电池也连接到 VBAT)时没有问题。
但是、当我关闭主电源时、我不会更新日期和时间。 我将在主断电时间和日期之前得到。
下面是 RTC-B 的设置
void Initialize_RTC_B (void)
{
/ /解锁电池备份系统
while (Battbak_unlockBackupSubSystem (bak_BATT_base));
//在低频模式下初始化 LFXT1晶体振荡器
UCS_TurnOnLFXT1 (UCS_XT1_DRIVE_3、UCS_XCAP_3);
/* 1-0 RTCTEVx RW 0h 实时时钟时间中断事件
00b =分钟更改
01b =小时更改
10b =每天午夜(00:00)
11b =每天中午(12:00)*/
//指定一个中断以每分钟生效
RTC_B_setCalendarEvent (RTC_B_BASE、
RTC_B_CALENDAREVENT_INTOTECHANGE);
//启用 RTC 就绪状态中断,当 RTC 时该中断有效
//Calendar 寄存器已准备好读取。
//此外,为日历警报和日历事件启用中断。
RTC_B_clearInterrupt (RTC_B_base、
RTCRDYIFG + RTCTEVIFG + RTCAIFG);
RTC_B_enableInterrupt (RTC_B_BASE、
RTCRDYIE + RTCTEVIE + RTCAIE);
//启动 RTC 时钟
RTC_B_startClock (RTC_B_BASE);
//中断被启用
_bis_SR_register (GIE);
__no_operation();
}
//
//
//这是 RTC_B 中断矢量服务例程。
//
//
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=RTC_vector
_interrupt
#Elif defined (_GNU_)
__attribute__((中断(RTC_Vector))
#endif
空 RTC_B_ISR (空)
{
//解锁备份系统
while (Battbak_unlockBackupSubSystem (bak_BATT_base));
switch (__evo_in_range (RTCIV、16))
{
情况0:中断;//无中断
案例2://RTCRDYIFG
中断;
案例4://RTCEVIFG
//每分钟中断一次
__no_operation();
//在这里读出新时间一分钟后的断点
RTC_B_getCalendarTime (RTC_B_BASE);
中断;
案例6://RTCAIFG
//每周第5天下午5:00中断
__no_operation();
中断;
案例8:中断;//RT0PSIFG
案例10:中断;//RT1PSIFG
案例12:中断;//保留
案例14:中断;//保留
案例16:中断;//保留
默认值:break;
}
}
我错过了什么吗?
