TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F5418A: RTC的闹钟为什么不产生中断?请老师帮助指导一下,谢谢!

Part Number:MSP430F5418A

RTC的设置代码如下,调试时能确定已经都设置成功了,但就是时间到了,中断并没有产生闹钟中断,请老师给指导以下,谢谢!

RTCCTL1=RTCBCD_H+RTCMODE_H; //设置了BCD和日历模式
RTCAMIN=0XA2; //以下4行设置了闹钟的时间
RTCADAY=0X92;
RTCADOW=0X80;
RTCAHOUR=0XA3;
RTCPS0CTL=RT0PSDIV_7;  //RT0PS的时钟源来自ACLK,没有允许中断
RTCPS1CTL=RT1PSDIV_6+RT1SSEL_2; //RT1PS的时钟源来自RT0PS,没有允许中断
RTCCTL0=RTCAIE;  //允许闹钟中断

Ben Qin:

你好,你没有打开计时器。

参考下该例程:

C:\ti\msp\MSP430Ware_3_80_14_01\examples\devices\MSP430F5xx_6xx\MSP430F541xA_MSP430F543xA_Code_Examples\C msp430x54xA_RTC_02.c

,

weiliang qin:

您好,RTC没有HOLD的,因为我在LCD上显示了分钟在不断地增加;而且我同时打开了RTCTEVIE(RTCCTL0=RTCAIE+RTCATEVIE;  ),这个中断有产生的,但RTCAIFG根本就没有置1

,

Ben Qin:

你设置了初始时间吗?可以将完整配置发上来吗?

,

weiliang qin:

每次上电自动读取时钟芯片里的时间的,时钟芯片有独立备用电池,里面的时间是准确的,我也验证过了RTC的时间也是正确的,而且是在实时地准确运行地,以下是仿真时寄存器地配置,这个应该是更一目了然了:

,

weiliang qin:

比如现在时间是10分钟,我设置闹钟到13分钟,RTCTEVIE会有中断产生,但RTCAIE就没有中断产生:

,

weiliang qin:

以下是RTC的配置函数,在上电启动时运行的

void RTC_Init(){ unsigned char i; time_typedef userTimeGet; //定义了一个时间变量 RTCCTL1=RTCBCD_H+RTCMODE_H; RTCAMIN=0XA9;// RTCADAY=0X93;// RTCADOW=0X81;// RTCAHOUR=0X87; RTCPS0CTL=RT0PSDIV_7; //RT0PS的时钟源来自ACLK,没有允许中断 RTCPS1CTL=RT1PSDIV_6+RT1SSEL_2; //RT1PS的时钟源来自RT0PS,没有允许中断 RTCCTL0=RTCAIE;//+RTCTEVIE; PCF8563GetTime(&userTimeGet);//从时钟芯片PCF8563读出时间到变量userTimeGet //以下是将从时钟芯片PCF8563读出的时间设置到RTC中 RTCSEC=userTimeGet.seconds&0x7F;//PCF8563中second字节的首位表示时钟芯片的时间不可靠,而RTC中不需要这样表示 RTCMIN=userTimeGet.minutes; RTCHOUR=userTimeGet.hours; RTCDAY=userTimeGet.days; RTCDOW=userTimeGet.weekdays; RTCMON=userTimeGet.months&0x7F;//PCF8563中month字节的首位表示世纪位,而RTC中不需要这样表示 RTCYEARL=userTimeGet.years;//PCF8563与RTC中year的表示方法不同 if(userTimeGet.months&0x80)//PCF8563与RTC中year的表示方法不同 RTCYEARH=0X19; else RTCYEARH=0X20;}

,

weiliang qin:

搞明白原因了,要通过红圈中的代码非掉不用的闹钟字节的AE位 ,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5418A: RTC的闹钟为什么不产生中断?请老师帮助指导一下,谢谢!
分享到: 更多 (0)