新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430中斷服務(wù)函數(shù)的定義

MSP430中斷服務(wù)函數(shù)的定義

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
//為了保證代碼可以在IAR編譯器的任何版本中都能正確得到編譯,所以作以下的條件編譯。


#ifdef __IAR_SYSTEMS_ICC__ //如果編譯器是IAR, 那么以下將被編譯。

#if __VER__ >= 200

#pragma vector=USART0RX_VECTOR //在IAR2.0以上中斷函數(shù)聲明。

__interrupt void SPI0_rx (void)

#else //在IAR2.0以下中斷函數(shù)聲明。

interrupt[USART0RX_VECTOR] void SPI0_rx (void)

#endif //IAR中斷函數(shù)聲明結(jié)束。

{ }

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

在上述中

USART0RX_VECTOR是定義中斷地址宏,其實(shí)就是一個(gè)中斷矢量值,例如,地址, 0xffe0 。

這個(gè)中斷矢量有芯片型號(hào)決定,一旦信號(hào)確定,那么所有的終端矢量也就確定了。

SPI0_rx是中斷函數(shù)名稱,使用者可以根據(jù)自己的喜好來(lái)編寫這個(gè)函數(shù)名。

實(shí)際例程

//**************************************************************************
//例程描述:利用定時(shí)器定時(shí)功能,實(shí)現(xiàn)P1.0方波輸出。

#include <msp430x14x.h>

{
WDTCTL = WDTPW + WDTHOLD;//停止看門狗WDT,不使用內(nèi)部看門狗定時(shí)器。
P1DIR |= 0x01;//設(shè)置P1.0口方向?yàn)檩敵觥?br />CCTL0 = CCIE;//設(shè)置捕獲/比較控制寄存器中CCIE位為1,CCR0捕獲/比較功能中斷為允許。
CCR0 = 50000;//捕獲/比較控制寄存器CCR0初值為5000。
TACTL = TASSEL_2 + MC_2;//設(shè)置定時(shí)器A控制寄存器TACTL,使時(shí)鐘源選擇為SMCLK輔助時(shí)鐘。
_BIS_SR(LPM0_bits + GIE);//進(jìn)入低功耗模式LPM0和開(kāi)中斷
}

//定時(shí)器A 中斷服務(wù)程序區(qū)
//當(dāng)IAR編譯器版本大于或等于2.0以上時(shí),則中斷寫法格式如下。
#pragma vector=TIMERA0_VECTOR//定時(shí)器A0中斷向量
__interrupt void Timer_A (void)//中斷函數(shù)
{
P1OUT ^= 0x01; //P1.0取反輸出
CCR0 += 50000; //重新載入CCR0捕獲/比較數(shù)據(jù)寄存器數(shù)據(jù)
}

//程序結(jié)束
//**************************************************************************



關(guān)鍵詞: MSP430中斷服務(wù)函

評(píng)論


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

關(guān)閉