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.

[参考译文] MSP430F5528:启动问题:WDT 在自动初始化期间保持的时间不够长

Guru**** 2513195 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1185321/msp430f5528-startup-issue-wdt-not-hold-long-enough-during-auto-init

器件型号:MSP430F5528

各位专家、您好!

我遇到了一个奇怪的问题、即在自动初始化期间 WDT 会恢复到早期。 在 cinit 之后立即恢复的 WDT、随后在 Pinit 期间触发、因为这显然需要超过一个默认周期。 如何避免这种情况的任何建议。 另一方面、这不是预期行为、因为设置表明只要用户代码未输入、WDT 就会被静音。

MFG Tobias F

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

    看门狗在复位期间启用、必须在触发前禁用。 通常在 main()的开头执行此操作是可以的,但有时在 C 启动中执行的初始化会花费太长的时间。 它必须复制初始值并将 BSS 归零。

    编译器可以提供一种挂钩代码的方法、该代码在这些可能耗时的活动之前执行。 借助 GCC、其工作原理如下:

    static void __attribute__((naked, section(".crt_0042"), used))
    disable_watchdog (void)
    {
      WDTCTL = WDTPW | WDTHOLD;
    }
    

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

    我想我找到了一个解决方案。 刚刚在 system_post_cinit 中添加了 WDT 停止、在恢复 WDT 之后和 Pinit 之前、该位置是下一个挂钩位置。 为什么链接器中也没有停止它的选项? 它有点误导、因为您认为您禁用了用于 init 的 WDT、只是为了找出它仅用于 cinit 的 WDT

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

    默认情况下、INIT 启用后、原因在于 WDT 。 通常情况下、cinit 中不会包含外设重新配置。 这就是我们需要在开始时配置 WDT 的原因。

    2. 您也可以在 每个代码示例中找到代码的这一部分"WDTCTL = WDTPW | WDTHOLD"。  

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

    是的、情况很清楚、我对此很熟悉。 问题是、设置建议在 cinit 期间保持 WDT、并在 Pinit 中失败。 当您认为 init 例程保存了它时、您可以花费几个小时进行调试、但时间不够长

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

    我很遗憾听到这个消息。 我认为好消息是、您知道正确的答案。