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.

[参考译文] MSP432E401Y:复位微控制器后的正确时间

Guru**** 2584165 points
Other Parts Discussed in Thread: MSP-EXP432E401Y

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/706156/msp432e401y-correct-time-after-resetting-the-microcontroller

器件型号:MSP432E401Y
主题中讨论的其他器件:MSP-EXP432E401Y

大家好、

我使用 time.h 来获取当前时间、但是当我按下电路板上的复位按钮时、时间也会复位、因此实际上是无用的。 我是否可以做些什么来解决这个问题/是否有人有任何建议?  

谢谢、

Ryan

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

    您可以使用休眠模块、配置 RTC 并使 RTC 能够防止这种行为。 现在、我们没有休眠时间 TI 驱动程序、因此您需要使用 RTOS 框架中的 driverlib 才能这样做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢。

    那么、在配置 RTC 并使用休眠模块启用 RTC 后、我还需要做些什么来在复位后获得正确的时间吗? 或者、我可以正常使用 time.h、它将起作用吗? 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan、

    休眠模块不受系统复位的影响(除非您关闭主板的电源)。 没有其他事情需要做。 但是、您的软件需要读取休眠控制寄存器以确保 RTC 已启用、以避免重复写入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Amit。 我正在尝试这样做,但是出于某种原因,在按下复位按钮后,函数 HibernateIsActivate()返回 false,尽管我在按下复位之前配置并启用了它。 我的代码是否用于此目的?

    void HibernateInit(){
    if (!HibernateIsActivate()){
    HibernateClockConfig (HIBERNATE_OSC_LOWDRIVE);
    HibernateRTCEnable();
    }
    } 

    感谢你的帮助。

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

    通过调用 HibernateEnableExpClk API 启用时钟

    if (!map_HibernateIsActivate())

    MAP_HibernateEnableExpClk (系统时钟);
    MAP_HibernateRTCSet (0);
    MAP_HibernateRTCEnable();


    这在 MSP432E4 SDK 中的示例中显示、路径为"C:\ti\simplelink_msp432e4_sdk_2_20_00_20\examples\nortos\MSP_EXP432E401Y\driverlib\HIBERNATE_vdd3on_rtcWAK"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Amit。 不幸的是、我认为在我最初的帖子中有一点误导。 我使用的是 time.h 库、尤其是 struct tm、它具有年、月、日等的值 这些仍然是不可靠的。

    我对此有2个问题:
    1.这些功能是否仅提供正确的日期/时间、因为微控制器处于调试模式并连接到我的计算机?
    2.如果是/否、如何确保这些功能在我上传代码并从我的计算机上拆分代码时仍然有效(我认为它必须关闭)。

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

    当前 time.h 使用 BIOS 时钟以指定的格式计算时间。 将其移动到 RTC 会使其独立复位、因为休眠中的 RTC 工作于32K 晶振。 在 LaunchPad 上将器件配置为 VDD3ON 模式后、无论主 CPU 域处于低功耗状态、都可以使器件正常工作。

    如果目的是断开电源、使器件保持工作时间、则需要使用 VDD3OFF 模式、这需要专用电路板设计(在 MSP-EXP432E401Y LaunchPad 上无法实现)。

    回到我们是否可以将 time.h 重新用于使用 RTC 而不是 BIOS 时钟、让我检查并确认是否可以使用当前 SDK。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、很高兴知道这一点。
    感谢您提供的信息、并让我知道您发现的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ryam

    我对这方面有一些更新。 以下链接适用于从计时器切换到 RTC 的 MSP432P4x 器件。 它也适用于 MSP432E4x (减去 MSP432P4x 的一些细微差别)

    processors.wiki.ti.com/.../TI-RTOS_MSP432_Timer

    请告诉我它是否有用。