日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]今天下午看了一下MSP430的看門狗的基本用法看門狗是為了防止程序跑飛而設(shè)定的,但是由于看門狗是一個(gè)類似于定時(shí)器,因此可以把他當(dāng)作定時(shí)器來使用示例代碼:用看門狗定時(shí)器使一個(gè)led閃爍#include void main( void ){

今天下午看了一下MSP430的看門狗的基本用法

看門狗是為了防止程序跑飛而設(shè)定的,但是由于看門狗是一個(gè)類似于定時(shí)器,因此可以把他當(dāng)作定時(shí)器來使用

示例代碼:用看門狗定時(shí)器使一個(gè)led閃爍

#include

void main( void )

{

// Stop watchdog timer to prevent time out reset

WDTCTL = WDT_MDLY_32;//宏定義

IE1 |=WDTIE; //允許看門狗定時(shí)器中斷

P2DIR |= BIT7;

_BIS_SR(LPM0_bits+GIE);//在這里的話將cpu進(jìn)入低功耗模式


}


#pragma vector = WDT_VECTOR

__interrupt void watchdag_timer(void)

{

P2OUT ^=BIT7;//異或操作基本上是取反操作

}



注意這里有一個(gè)比較好的宏定義:WDTCTL = WDT_MDLY_32;進(jìn)入該宏定義會(huì)發(fā)現(xiàn)類似的宏定義有很多



/* 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 " */


這里我們可以根據(jù)通常的需要,選擇合適的定時(shí)時(shí)間

說到定時(shí)時(shí)間,這里又不得不講一下中斷函數(shù),在IAR這個(gè)編譯環(huán)境中,一般中斷函數(shù)的寫法是


#pragma vector = 中斷向量

__interrupt void 中斷函數(shù)名(void)

{

用戶程序;

}


注意,中斷向量可以在430的頭文件中查找,中斷函數(shù)的聲明必須是void 中斷函數(shù)名(void),這是因?yàn)橹袛嗪瘮?shù)沒有返回值,也沒有中斷的形式參數(shù)


但是本人又在網(wǎng)站上看到另外一種用switch來寫的,就是一個(gè)中斷源對(duì)應(yīng)幾個(gè)中斷向量,這種寫法目前我還沒有見過源碼,所以不好總結(jié)


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉