我有一个具有 CC430F5137微控制器的开发板、我正在尝试在日历模式中设置 RTC 模块。
我希望每秒切换一个具有读取就绪中断的 LED、每分钟切换一个具有时间事件中断的 LED。
ACLK 已默认设置为32.760kHz、并进行分频以提供1秒的间隔。 (我用其他代码尝试过它、它正常工作)。
时间事件已默认设置为"分钟已更改"。
代码非常简单、但无法正常工作。 我尝试使用 调试模式读取 RTCSEC (秒寄存器)、但它没有改变。
这是代码、谢谢
#include "cc430x513x.h"
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
//设置 LED (P1.0和 P3.0)
P1OUT &=~BIT0;
P1DIR |= BIT0;
P3OUT &=~BIT0;
P3DIR |= BIT0;
//设置 RTC
RTCCTL0 |= RTCTEVIE + RTCRDYIE; //启用 RTC 时间事件和读取就绪中断
RTCCTL1 |= RTCBCD + RTCHOLD + RTCMODE; // BCD 模式、RTC 保持、日历模式
RTCYEAR = 0x2021; //年份= 2021
RTCMON = 0x06; //月= 6月
RTCDAY = 0x02; //天= 2.
RTCDOW = 0x03; //周中某天=星期三
RTCHOUR = 0x10; //小时= 10
RTCMIN = 0x32; //分钟= 32
RTCSEC = 0x45; //秒= 45
RTCCTL1 &=~RTCHOLD; //启动 RTC
_bis_SR_register (LPM3_bits + GIE); //进入启用中断的 LPM3模式
}
#pragma vector = RTC_vector
_interrupt void RTC_ISR (void)
{
switch (__event_in_range (RTCIV、16))
{
情况0:中断; //无中断挂起
案例2: // RTC 就绪(RTCRDYIFG)
P1OUT ^= BIT0;
中断;
案例4: // RTC 间隔定时器(RTCTEVIFG)
P3OUT ^= BIT0;
中断;
案例6:中断; // RTC 用户报警(RTCAIFG)
情况8:中断; // RTC 预分频器0 (RT0PSIFG)
情况10:中断;// RTC 预分频器1 (RT1PSIFG)
案例12:中断;//保留
案例14:中断;//保留
案例16:中断;//保留
默认值:break;
}
}