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.

[参考译文] TM4C123GH6PM:RTC 功能挂起。

Guru**** 2443910 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/629634/tm4c123gh6pm-rtc-function-hangs

器件型号:TM4C123GH6PM

您好!  

我正在尝试在 RTC 中存储 epoch 时间、我的代码流是。

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_HIBERNATE);

while (!ROM_SysCtlPeripheralReady (SYSCTL_Periph_HIBERNATE)){

ROM_HibernateEnableExpClk ((ROM_SysCtlClockGet ()));

msleep (100);//休眠100ms。
ROM_HibernateClockConfig (HIBERNATE_OSC_DISABLE);//禁用以使用32K 的外部时钟源
msleep (100);//睡眠100ms
ROM_HibernateRTCEnable();
if (!ROM_HibernateIsActive()){
ROM_HibernateRTCSet (0);

//连接到 NTP 服务器后,我更新 RTC 时间。

ROM_HibernateRTCSet (epechTime);

当我打印一段时间后、我的 RTC 数据将重新显示时间、然后继续...

问题是、如果我重新启动器件 "ROM_HibernateEnableExpClk ((ROM_SysCtlClockGet ()));" 在等待写入控制寄存器置位时挂起。

问题。

等待写入器控制寄存器的原因是什么。

ROM_HibernateClockConfig (HIBERNATE_OSC_DISABLE);它是通过连接 到 xosc 引脚的32K 外部时钟启用和拉取 RTC 的正确方法

RTC 计数速度更快的原因是什么。

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

    首先也是最重要 的、由于这个条件似乎出现在复位时、你应该调查任何潜在的影响勘误表项目 HIB#01:www.ti.com/.../spmz849f.pdf -这可能是你观察较快的 RTC 计数的原因。

    关于问题2、根据32kHz 晶体的设置、您可能还必须设置 HIBERNATE_OSC_HIGRHDIVE -您使用的是 LaunchPad 还是定制板?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jacobi、

    首先、感谢您的输入、我使用的是定制板。 第二个问题 I 由于 HIBERNATE_OSC_DISABLE、如果我使用 HIBERNATE_OSC_HIGRIVE/HIBERNATE_OSC_LOWDRIVE、则工作正常。
    更快速的 RTC 计数。 我无法解决这个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Chiranth、

    您是否已调查过我上面提到的勘误表项 HIB#01是否是根本原因? 这不是我可以为您做的事情、您需要将勘误项与系统配置进行比较、并确定其是否相关。 如果是、则勘误表概述了可采取的防范措施。

    您可能需要具有正确值 的 HibernateRTCTrimSet API:e2e.ti.com/.../2056688