|
看門(mén)狗是在軟件跑飛的情況下CPU自恢復(fù)的一個(gè)方式,當(dāng)軟件在選定的時(shí)間間隔內(nèi)不能置位看門(mén)狗定時(shí)器(WDT),WDT就復(fù)位系統(tǒng)?撮T(mén)狗可用于電噪聲,電源故障或靜電放電等惡劣工作環(huán)境或高可靠性要求的環(huán)境。如果系統(tǒng)不需要應(yīng)用到看門(mén)狗,則WDT可配置成間隔定時(shí)器,在選定時(shí)間間隔內(nèi)產(chǎn)生中斷。 WDT的特性如下:4個(gè)可選擇的時(shí)間間隔看門(mén)狗定時(shí)器模式下產(chǎn)生中斷請(qǐng)求時(shí)鐘獨(dú)立于系統(tǒng)時(shí)鐘,WDT包括一個(gè)15位定時(shí)/計(jì)數(shù)器,它的頻率由32.768KHz的晶振決定。用戶不能查看計(jì)數(shù)器的值工作于各個(gè)電源模式。讓用戶了解幾種看門(mén)狗定時(shí)器的使用
0.png (202.34 KB, 下載次數(shù): 67)
下載附件
2017-11-29 03:34 上傳
單片機(jī)源程序如下:
- /****************************************************************************
- * 文 件 名: main.c
- * 作 者: Andy
- * 修 訂: 01-09
- * 版 本: 1.0
- * 描 述: 打開(kāi)看門(mén)狗后,得記得喂狗,不然系統(tǒng)就會(huì)不停地復(fù)位了
- ****************************************************************************/
- #include <ioCC2530.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- #define LED1 P1_0 // P1.0口控制LED1
- #define LED2 P1_1 // P1.1口控制LED2
- /****************************************************************************
- * 名 稱(chēng): DelayMS()
- * 功 能: 以毫秒為單位延時(shí) 16M時(shí)約為535,系統(tǒng)時(shí)鐘不修改默認(rèn)為16M
- * 入口參數(shù): msec 延時(shí)參數(shù),值越大,延時(shí)越久
- * 出口參數(shù): 無(wú)
- ****************************************************************************/
- void DelayMS(uint msec)
- {
- uint i,j;
-
- for (i=0; i<msec; i++)
- for (j=0; j<535; j++);
- }
- /****************************************************************************
- * 名 稱(chēng): InitLed()
- * 功 能: 設(shè)置LED燈相應(yīng)的IO口
- * 入口參數(shù): 無(wú)
- * 出口參數(shù): 無(wú)
- ****************************************************************************/
- void InitLed(void)
- {
- P1DIR |= 0x03; //P1.0、P1.1定義為輸出
- LED1 = 1; //默認(rèn)LED燈為熄滅狀態(tài)
- LED2 = 1;
- }
- void Init_Watchdog(void)
- {
- WDCTL = 0x00; //打開(kāi)IDLE才能設(shè)置看門(mén)狗
- WDCTL |= 0x08; //定時(shí)器間隔選擇,間隔一秒
- }
- void FeetDog(void)
- {
- WDCTL = 0xa0; //清除定時(shí)器。當(dāng)0xA跟隨0x5寫(xiě)到這些位,定時(shí)器被清除
- WDCTL = 0x50;
- LED2 = 0; //系統(tǒng)不復(fù)位LED2燈長(zhǎng)亮
- }
- /****************************************************************************
- * 程序入口函數(shù)
- ****************************************************************************/
- void main(void)
- {
- InitLed(); //調(diào)用初始化函數(shù)
- Init_Watchdog();
- while(1)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (6.04 KB, 下載次數(shù): 60)
下載附件
2017-11-29 03:35 上傳
所有資料51hei提供下載:
15.看門(mén)狗.zip
(303.76 KB, 下載次數(shù): 14)
2017-11-28 21:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|