This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC430F5137:RTC 模块-日历模式

Guru**** 2387830 points
Other Parts Discussed in Thread: CC430F5137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1008325/cc430f5137-rtc-module---calendar-mode

器件型号:CC430F5137

我有一个具有 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;
  }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找到了解决方案

    寄存器的正确配置是

    RTCCTL0 |= RTCTEVIE + RTCRDYIE;
    RTCCTL1 |= RTCBCD_H + RTCHOLD + RTCMODE_H;

    (笑声)

    RTCCTL1 &=~RTCHOLD;

    或(字配置)

    RTCCTL01 |= RTCTEVIE + RTCRDYIE + RTCBCD + RTCHOLD + RTCMODE;

    (笑声)

    RTCCTL01 &=~RTCHOLD;