新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F149看門狗及其應(yīng)用

MSP430F149看門狗及其應(yīng)用

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
1、概述

看門狗有兩個(gè)作用:1、可以防止程序跑飛,若程序跑飛可讓單片機(jī)復(fù)位;2、可作為間隔時(shí)間發(fā)生器,在中斷中進(jìn)行定期刷新顯示、讀取數(shù)據(jù)等對外設(shè)的操作。

本文引用地址:http://m.butianyuan.cn/article/201611/322342.htm

2、設(shè)置

不需要看門狗時(shí)可用軟件關(guān)閉,設(shè)置:WDTCTL = WDTPW + WDTHOLD;

為防止誤觸發(fā)操作WDTCTL需要先寫入WDTPW。

作為間隔定時(shí)器時(shí)詳細(xì)操作可見MSP430F149.H文件中的宏定義。

3、相關(guān)寄存器

1、WDTCTL Watchdog Timer Register

WDTPW Bits

15-8

Watchdog timer password. Always read as 069h. Must be written as 05Ah, or

a PUC will be generated.

WDTHOLD Bit 7 Watchdog timer hold. This bit stops the watchdog timer. Setting WDTHOLD= 1 when the WDT is not in use conserves power.

0 Watchdog timer is not stopped

1 Watchdog timer is stopped

WDTTMSEL Bit 4 Watchdog timer mode select

0 Watchdog mode

1 Interval timer mode

WDTCNTCL Bit 3 Watchdog timer counter clear. Setting WDTCNTCL = 1 clears the count value

to 0000h. WDTCNTCL is automatically reset.

0 No action

1 WDTCNT = 0000h

2、IE1 Interrupt Enable Register 1

WDTIE Bit 0 Watchdog timer interrupt enable. This bit enables the WDTIFG interrupt for

interval timer mode. It is not necessary to set this bit for watchdog mode.

Because other bits in IE1 may be used for other modules, it is recommended

to set or clear this bit using BIS.B or BIC.B instructions, rather than MOV.B

or CLR.B instructions.

0 Interrupt not enabled

1 Interrupt enabled

4、設(shè)計(jì)實(shí)例

4.1 利用WDT定時(shí)模式在中斷函數(shù)中定時(shí)操作外設(shè)

說明:#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL)

void main(void)

{

WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms

IE1 |= WDTIE; // Enable WDT interrupt

P2DIR |= 0x01; // Set P1.0 to output direction

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt

}

// Watchdog Timer interrupt service routine

#pragma vector=WDT_VECTOR

__interrupt void watchdog_timer(void)

{

P2OUT ^= 0x01; // Toggle P1.0 using exclusive-OR

}

4.2 利用WDT定時(shí)模式延時(shí)

WDTCTL = WDT_ADLY_1000;//延時(shí)1000ms

//延時(shí)2s

for(i = 0; i < 3; i++)

{

IFG1 &= ~WDTIFG;

while(!(IFG1 & WDTIFG));

}

IFG1 &= ~WDTIFG;



關(guān)鍵詞: MSP430F149看門

評論


技術(shù)專區(qū)

關(guān)閉