看門狗是為了防止程序跑飛而設定的,但是由于看門狗是一個類似于定時器,因此可以把他當作定時器來使用
示例代碼:用看門狗定時器使一個led閃爍
#include
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDT_MDLY_32;//宏定義
IE1 |=WDTIE; //允許看門狗定時器中斷
P2DIR |= BIT7;
_BIS_SR(LPM0_bits+GIE);//在這里的話將cpu進入低功耗模式
}
#pragma vector = WDT_VECTOR
__interrupt void watchdag_timer(void)
{
P2OUT ^=BIT7;//異或操作基本上是取反操作
}
注意這里有一個比較好的宏定義:WDTCTL = WDT_MDLY_32;進入該宏定義會發現類似的宏定義有很多
/* WDT-interval times [1ms] coded with Bits 0-2 */
/* WDT is clocked by fSMCLK (assumed 1MHz) */
#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL) /* 32ms interval (default) */
#define WDT_MDLY_8 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0) /* 8ms “ */
#define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1) /* 0.5ms ” */
#define WDT_MDLY_0_064 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms “ */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ADLY_1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL) /* 1000ms ” */
#define WDT_ADLY_250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms “ */
#define WDT_ADLY_16 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms ” */
#define WDT_ADLY_1_9 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms “ */
/* Watchdog mode -》 reset after expired time */
/* WDT is clocked by fSMCLK (assumed 1MHz) */
#define WDT_MRST_32 (WDTPW+WDTCNTCL) /* 32ms interval (default) */
#define WDT_MRST_8 (WDTPW+WDTCNTCL+WDTIS0) /* 8ms ” */
#define WDT_MRST_0_5 (WDTPW+WDTCNTCL+WDTIS1) /* 0.5ms “ */
#define WDT_MRST_0_064 (WDTPW+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms ” */
/* 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 ” */
這里我們可以根據通常的需要,選擇合適的定時時間
說到定時時間,這里又不得不講一下中斷函數,在IAR這個編譯環境中,一般中斷函數的寫法是
#pragma vector = 中斷向量
__interrupt void 中斷函數名(void)
{
用戶程序;
}
注意,中斷向量可以在430的頭文件中查找,中斷函數的聲明必須是void 中斷函數名(void),這是因為中斷函數沒有返回值,也沒有中斷的形式參數
但是本人又在網站上看到另外一種用switch來寫的,就是一個中斷源對應幾個中斷向量,這種寫法目前我還沒有見過源碼,所以不好總結
評論
查看更多