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的喂狗操作。

Other Parts Discussed in Thread: MSP430F449

在使用MSP430F449的过程中,出现问题。

看门狗不能喂狗,重复的复位。

#include <msp430.h>

 long i = 0;
void main()
{
    P5DIR |= BIT1;
    P5OUT = 0X02;
    for(i = 0x7fff; i > 1; i--);
    P5OUT = 0X00;
    WDTCTL = WDT_ARST_250;
   

    BTCTL = BT_ADLY_32;
    IE2 |= BTIE;
    _EINT();

while(1);

}

#pragma vetor = BASICTIMER_VECTOR

__interrupt void bt_isr(void)

{

             WDTCTL =WDT__ARST_250;



何解? 

为什么会重复的复位呢?

  • 你假定ACLK是32千赫。但事實並非如此。

    MSP430F449.H says:

    /* WDT is clocked by fACLK (assumed 32KHz) */
    #define WDT_ARST_1000 (WDTPW+WDTCNTCL+WDTSSEL) /* 1000ms " */
    #define WDT_ARST_250 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */
    #define WDT_ARST_16 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */
    #define WDT_ARST_1_9 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms " */

     

  • 你好,

    看门狗可以做为两个用途:

    第一,定时器中断。

    第二,看门狗复位。

    如果你要求使用看门狗复位功能,不必要利用定时器中断,直接把  WDTCTL =WDT__ARST_250; 加在while(1)循环里面,这样CPU就不会复位了。