请教MSP430F6723的RTC不能使用内部时钟REFOCLK吗?
[复制链接]
在430F6723的时钟配置如下:
UCSCTL4 &= ~(SELA0 | SELA1 | SELA2); // Ensure XT1 is ACLK source // (127+1) x 32768 = 4194304hz(4.19455)
UCSCTL4 |= SELA1;
UCSCTL3 |= SELREF__REFOCLK;
do
{
UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while ((SFRIFG1 & OFIFG)&&(delay--)); // Test oscillator fault flag
///jackwei时钟SMCLK变为4194304hz
__bis_SR_register(SCG0); // 禁止FLL功能
UCSCTL0 = 0x0000 ;
UCSCTL1 = DCORSEL_5; // DCO频率为(2.5~6MHz)手册37页
UCSCTL2 = FLLD_1 + 127; // 设置DCO频率为4194304hz
__bic_SR_register(SCG0); // 使能FLL功能
设置的ACLK为REFOCLK时钟源
在RTC的配置为:
void rtc_init(void)
{
// RTCCTL1 = RTCTEVIE + RTCRDYIE + RTCMODE+ RTCSSEL_0+ RTCTEV__MIN+ RTCAIE; //
RTCCTL0_H = RTCKEY_H; //解锁RTC_C模块
RTCCTL0_L = RTCTEVIE+ RTCRDYIE + RTCAIE ; //启用RTC时间事件中断
RTCCTL13 = RTCTEV_3+ RTCMODE + RTCHOLD+ RTCSSEL_0; // BCD模式,RTC保持,将RTCTEV设置为12:00分钟警报,32khz RTCBCD++ RTCHOLD
//事件中断
RTCYEAR = 2020; // Year = 0x2020
RTCMON = 8; //月= 0x10 =十月
RTCDAY = 3; // Day = 0x07 = 7th
RTCDOW = 1; //星期几= 0x05 =星期五
RTCHOUR = 5; //小时= 0x11
RTCMIN = 59; //分钟=59
RTCSEC = 0; //秒= 0
RTCCTL13 &=~(RTCHOLD); //启动RTC日历模式
RTCCTL0_H = 0; //锁定RTC_C模块
RTCAHOUR = RTCAE + 6;
}
不知为什么RTC 的中断很长时间才进入一次。大约50s进入RTCIV_RTCRDYIFG中断1次。
其中 中断源中RTCOFIFG =1;
TIMEARA中配置的时间较为准确,不知道什么原因导致RTC差距很大。
|