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:CC430F5137 RTC日历模式

Guru**** 2535750 points
Other Parts Discussed in Thread: CC430F5137

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581196/cc430f5137-cc430f5137-rtc-calendar-mode

部件号:CC430F5137

您好,

我使用TI CC430F5137 MCU已经有一段时间了。 我正在日历模式(十六进制格式)中使用RTC,并且我能够读取小时,分钟和秒数据。 不过,我亦想从登记册中读出年份的资料,我已初步把登记册设置如下:  

RTCYEARL = 0xE1;
RTCYEARH = 0x07; 对应于2017年。

任何建议都将大有帮助。

谢谢!

Sushmitha R

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

    请详细说明您遇到的问题,因为RTCYEARL/RTCYEARH是RW寄存器,就像RTCHOUR,RTCMIN和RTCSEC一样,可以类似的方式读取。

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

    您好,Ryan:

    感谢您的回复。

    我目前正在将十进制值加载为小时,分钟和秒,并使用读取函数读取它们。 但在年份中,它们是两个不同的寄存器,具有加载十六进制值的较高和较低字节。 请帮助我以十进制格式读取年份值。

    谢谢!

    Sushmitha R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    取一个16位变量,并将其分配给RTCYEARL + RTCYEARH位向左移8次的值,类似如下所示:

    unsigned int year = RTCYEARH;
    年份=(< 8年)+ RTCYEARL;

    此代码未经测试,必须先验证,但结果应为0x7E1 (十进制2017)。 然后将此值从十六进制转换为您喜欢的格式。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    或者,如果您更喜欢数学而不是位移:

    unsigned int year = RTCYEARH;
    年=(年* 256)+ RTCYEARL;

    或在一行中:
    Int year = RTCYEARH * 256 + RTCYEARL;

    无论如何,编译器可能会将其转变为一种转变。 8^)

    (Ryan,你完全正确,但这可能有助于Sushmitha R了解发生了什么。)