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.

[参考译文] MSP430FR2355:WDT?

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/975054/msp430fr2355-wdt

器件型号:MSP430FR2355

我以前只使用 WDT 作为间隔定时器、希望将其用作看门狗。  Resource Explorer 中的简单应用程序示例似乎没有回答我的问题。

我想用 ACLK 设置看门狗,然后再用一秒钟....

1、 看门狗可以用作看门狗、看门狗的时间间隔可以通过 WDTIS 位表示、也可以严格地说这些位仅用于定时器间隔吗?

2. 在将看门狗用作看门狗时、是否需要 WDT ISR、或者严格地说是在计时器模式下使用 WDT ISR?

3. 我应该在该 ISR 内写入 WDTCNTCL 位(如果上面的#2为真)吗?

4. 要启动主循环的看门狗,我应该一直用0x5A2C 写入 WDTCTL?...这将选择 ACLK,清除计数器并将其设置为1秒...

5. 如果我需要如何处理 IFG?   

6. 在 LPM3之前的配置过程中、应该将 WDTCTL 设置为第一行代码吗? 在本说明中、我还应该在这里设置 IE 吗?  是否需要设置 GIE 才能使其正常工作?

谢谢

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

    以下是尝试在软件挂起时实现16秒重启的示例代码。  这是我的软件唯一重新启动的地方...当我放置在应用程序代码中时、我每隔1/2秒会看到我正在重新启动。  有人能告诉我我缺少什么吗?

    #include 
    
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    
    //配置和设置时间最长为1秒
    
    WDTCTL = WDTPW | WDTSSEL_ACLK | WDTTMSEL | WDTCNTCL | WDTIS_3;//aclk、16秒定时器
    SFRIFG1 &=~WDTIFG;
    SFRIE1 |= WDTIE;
    
    while (1)
    {
    LPM3;
    
    WDTCTL |= WDTPW | WDTCNTCL;//KICK WDT
    
    //应用软件
    }
    }
    
    //一组 ISR
    
    #pragma vector = WDT_vector
    __interrupt void locking_ISR (void)
    {
    WDTCTL = 0xDEAD;//复位器件
    } 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    用户指南详细介绍了 WDT 的使用。 如果这还不够、TI 提供的代码示例中应提供其使用示例。 www.ti.com/.../slac740

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

    我去过这两个地方,都没有回答我的问题

    我的上述示例的问题似乎是尝试写入

    使用“|=”的 WDTCTL 会导致重新引导.....

    显然您需要"="

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

    然后、您在用户指南中遗漏了这一点:"对 WDTCTL 的任何读取都会读取高字节中的069h。"