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.

[参考译文] 看门狗 CPU 复位

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/712424/watchdog-cpu-reset

对于我的 Tiva-c 微控制器、我将看门狗超时配置为1秒 禁用看门狗触发器功能后、需要2秒钟直到发生 CPU 复位。 1秒后 CPU 复位的正确配置是什么?

看门狗定时器可配置为在第一次超时后向处理器产生中断、并在第二次超时后产生复位信号。 是否有办法在第一次超时后获得 CPU 复位信号?

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

    您专门使用什么 TM4C MCU? 我们有两个器件系列、即 TM4C123x 和 TM4C129x、我需要知道您使用哪一个来提供帮助。

    此外、当您说"禁用后"时、您能否说明如何禁用然后重新启用看门狗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jacobi、

    我使用的是 TM4C123x 系列。 禁用意味着停止触发或停止以重置看门狗超时。

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

    您好、dha1、

    好的理解、我想确认您正在完全重新启动看门狗、因为您看到的内容(您可能会注意到)只会发生在看门狗的开始处。

    根据器件规格、您看到的行为与看门狗的工作方式完全相同。 我将复制看门狗计时器的说明、然后进一步解释:

    看门狗定时器模块
    在32位计数器使能后达到零状态时产生第一个超时信号;使能计数器也使能看门狗定时器中断。
    通过 WDTCTL
    寄存器的 INTTYPE 位可以将看门狗中断编程为不可屏蔽中断(NMI)。 在发生第一次超时事件后、32位计数器将
    重新装载看门狗定时器装载寄存器(WDTLOAD
    )的值、并且定时器从该值恢复递减计数。 一旦看门狗定时器被配置、看门狗定时器锁定
    (WDTLOCK)寄存
    器就会被写入、从而防止软件无意中更改定时器配置。
    
    如果在第一次超时中断被清除之前定时器再次计数到0状态、并且
    通过置位 WDTCTL 寄存
    器的 RESEN 位使能复位信号、那么看门狗定时器向系统发出复位信号。 如果在32位计数器达到
    第二次超时之前将中断清零、则32位计数器将加载 WDTLOAD 寄存器中的值、并
    从该值恢复计数 

    如上所述、看门狗在定时器第一次递减计数时产生中断。 此时、ISR 可以执行两项操作之一。

    1) 1)馈送看门狗以使其保持快乐、它将在后台运行、直到在下一次倒计数结束时准备好再次馈送

    2) 2)通过不清除中断来忽略看门狗、然后当计时器再次递减计数时、它将检查 RESEN 是否已设置、如果已设置、则将复位 CPU。

    换句话说、根据设计、您需要通过计时器两个周期、以便在启动计时器后能够通过看门狗超时功能重置 CPU。

    一旦它运行、就更容易处理、因为您只需要不清除您获得的下一个中断、 但是、即使在这种情况下、如果您决定在清除计时器后立即复位、则可能需要接近2秒的时间才能完成该过程。