您好!
我正在使用 MSP-EXP430F5438A 开发板。 我尝试每15分钟触发一次中断来切换 LED。 但 它不起作用。 我已随附以下代码。 您能指导我获取中断吗?
int main (空)
{
RTC_Check ();
返回0;
}
空 RTC_Check (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
P1DIR |= BIT0;//将 P1.0设置为输出
P1DIR |= BIT1;
//初始化 LFXT1
P7SEL |= 0x03;//选择 XT1
UCSCTL6 &=~(XT1OFF);// XT1打开
UCSCTL6 |= XCAP_3;//内部负载电容
//循环直到 XT1、XT2和 DCO 故障标志被清除
操作
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} while (SFRIFG1&OFIFG);//测试振荡器故障标志
//配置 RTC_A
RTCCTL01 |= RTCAIE + RTCTEVIE + RTCRDYIE + RTCBCD + RTCHOLD;
// RTC 使能、BCD 模式、RTC 保持
//启用 RTC 读取就绪中断
//启用 RTC 时间事件中断
//启用报警中断
RTCYEAR = 0x2010;//年= 0x2010
RTCMON = 0x04;//月= 0x04 =四月
RTCDAY = 0x05;//天= 0x05 =第5个
RTCDOW = 0x01;//周中某天= 0x01 =星期一
RTCHOUR = 0x10;//小时= 0x10
RTCMIN = 0x32;//分钟= 0x32
RTCSEC = 0x45;//秒= 0x45
// RTCADOWDAY = 0x00;// RTC 周中某天闹铃= 0x2
// RTCADAY = 0x00;// RTC 天闹铃= 0x20
// RTCAHOUR = 0x00;// RTC 小时报警
RTCAMIN = 0x80 | 0x15;// RTC 分钟报警+使能分钟报警
RTCCTL01 &=~(RTCHOLD);//启动 RTC 日历模式
_bis_SR_register (LPM3_bits + GIE);//使用中断进入 LPM3模式
//已启用
__no_operation();
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=RTC_vector
_interrupt void RTC_ISR (void)
#Elif defined (_GNU_)
void __attribute__((interrupt (RTC_vector))) RTC_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (RTCIV、16))
{
案例 RTC_NONE://无中断
中断;
案例 RTC_RTCRDYIFG:// RTCRDYIFG
中断;
案例 RTC_RTCTEVIFG:// RTCEVIFG
P1OUT ^= 0x01;//切换 P1.0
__no_operation();
中断;
案例 RTC_RTCAIFG:// RTCAIFG
P1OUT ^= 0x02;//切换 P1.1
中断;
案例 RTC_RT0PSIFG:// RT0PSIFG
中断;
案例 RTC_RT1PSIFG:// RT1PSIFG
中断;
案例12:中断;//保留
案例14:中断;//保留
案例16:中断;//保留
默认值:break;
}
}
谢谢
Siva B