请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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