各位专家、您好!
我遇到了一个奇怪的问题、即在自动初始化期间 WDT 会恢复到早期。 在 cinit 之后立即恢复的 WDT、随后在 Pinit 期间触发、因为这显然需要超过一个默认周期。 如何避免这种情况的任何建议。 另一方面、这不是预期行为、因为设置表明只要用户代码未输入、WDT 就会被静音。
MFG Tobias F
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.
各位专家、您好!
我遇到了一个奇怪的问题、即在自动初始化期间 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;
}