【发布时间】:2011-08-31 04:46:09
【问题描述】:
我需要每 15 分钟设置一次闹钟(00:15、00:30、00:45、01:00,...) 使用实时时钟做一些处理,然后设置新的警报值。 好吧,我已经编写了代码,它可以很好地运行时钟。但不会出现经期警报。
如果有关于代码的反馈会很棒
void rtc_init(void)
{
RTCCTL01 = RTCMODE + RTCTEVIE + RTCTEV_0;
RTCCTL01 |= RTCHOLD;
RTCSEC = 0x00;
RTCMIN = 0x28;
RTCHOUR = 0x12;
RTCDOW = 0x05;
RTCDAY = 0x1A;
RTCMON = 0x08;
RTCYEAR = 0x07DB;
RTCAMIN = timer;
RTCCTL01 &= ~RTCHOLD;
__enable_interrupt();
}
#pragma vector=RTC_VECTOR
__interrupt void handle_rtc_interrupt(void)
{
switch(__even_in_range(RTCIV,8))
{
case 6:
get_fix();
timer += timer;
if (timer == 60) timer = 1;
RTCAMIN = timer;
RTCCTL1 &= ~RTCHOLD;
break;
}//switch
}//ISR
【问题讨论】:
-
您需要解决您的问题。提供代码很好,但您并不总是提供足够的信息。例如,您使用的是哪个 MSP430 部件?您的代码不完整,因此尽管这里可能有有限的人可以帮助您,但您通过不提供完整(最少)的工作代码来进一步限制它。当它是直接影响RTC警报的部分时,您没有提及您的“计时器”变量具有什么值。您有一个函数 get_fix() 可能会影响问题,但您没有显示它的作用。
-
我假设您使用的是 MSP430F5XXX 系列器件。如果您使用的是第一代 F5 设备(非 A 变体),那么您必须非常小心,因为硬件有问题。 TI 提供的驱动程序(在我的应用程序中)对于黄金时段来说不够强大。
-
@tinman ,感谢您的反馈,对于给您带来的不便,我们深表歉意。
get_fix()只是打开GPS_module,这样你就不用担心了。timer是时间间隔的全局变量,根据用户的方便而变化 -
@lan 感谢您向我更新有关 F5XXX 严重的信息