请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2355 主题中讨论的其他器件:MSP-EXP430FR2355
工具与软件:
您好!
我想使用看门狗计时器(WDT)、以便在遇到任何软件问题时执行系统重新启动。 我已将 WDT 配置为默认看门狗模式、具有交替时钟源(32k)和1秒超时。 我始终会在1秒之前清除 WDT 计数。 但是、WDT 会在我的应用中持续执行复位。 我已经为 MSP-EXP430FR2355 EVM 编写了用于调试的简化代码。 有人可以检查一下吗? 我是否忘记了有关配置 WDT 的任何信息?
#include <msp430.h> // f(DCODIV) = (60+1)*32768 Hz = 2 MHz (1.998.848) static void init_clock_2MHz(void) { __bis_SR_register(SCG0); // disable FLL CSCTL3 |= SELREF__REFOCLK; // Set REFO as FLL reference source CSCTL1 = DCOFTRIMEN_1 | DCOFTRIM0 | DCOFTRIM1 | DCORSEL_1;// DCO Range = 2 MHz CSCTL2 = FLLD_0 + 60; // DCODIV = 2MHz __delay_cycles(3); __bic_SR_register(SCG0);// enable FLL // software_trim(); // Software Trim to get the best DCOFTRIM value CSCTL4 = SELMS__DCOCLKDIV | SELA__REFOCLK;// set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz // default DCODIV as MCLK and SMCLK source } /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD;// stop watchdog timer PM5CTL0 &= ~LOCKLPM5;// Disable the GPIO power-on default high-impedance mode // to activate previously configured port settings init_clock_2MHz(); /*! Initialize WDT */ WDTCTL = WDT_ARST_1000;// Watchdog mode, ACLK , 1sec timeout P1DIR |= BIT0;// Set P1.0 as output while (1) { /* Clear WDT count */ WDTCTL |= (WDTPW + WDTCNTCL); P1OUT |= BIT0;// high __delay_cycles(5E5);// 0.25 sec P1OUT &= ~BIT0;// low __delay_cycles(5E5);// 0.25 sec } // return 0; }
谢谢!
Hassan