新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430中斷服務函數的定義

        MSP430中斷服務函數的定義

        作者: 時間:2016-11-27 來源:網絡 收藏
        //為了保證代碼可以在IAR編譯器的任何版本中都能正確得到編譯,所以作以下的條件編譯。


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

        #if __VER__ >= 200

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

        __interrupt void SPI0_rx (void)

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

        interrupt[USART0RX_VECTOR] void SPI0_rx (void)

        #endif //IAR中斷函數聲明結束。

        { }

        本文引用地址:http://www.104case.com/article/201611/322213.htm

        在上述中

        USART0RX_VECTOR是定義中斷地址宏,其實就是一個中斷矢量值,例如,地址, 0xffe0 。

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

        SPI0_rx是中斷函數名稱,使用者可以根據自己的喜好來編寫這個函數名。

        實際例程

        //**************************************************************************
        //例程描述:利用定時器定時功能,實現P1.0方波輸出。

        #include <msp430x14x.h>

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

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

        //程序結束
        //**************************************************************************



        關鍵詞: MSP430中斷服務函

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝鸡市| 永和县| 三亚市| 岚皋县| 宝鸡市| 利川市| 克拉玛依市| 容城县| 安塞县| 汪清县| 南京市| 咸宁市| 和平县| 平邑县| 仁怀市| 田阳县| 遂宁市| 酉阳| 治多县| 嘉黎县| 个旧市| 衡阳市| 普兰店市| 铅山县| 崇文区| 新津县| 连江县| 维西| 武穴市| 卢龙县| 东安县| 黄陵县| 灌云县| 德江县| 新疆| 汤阴县| 甘洛县| 宁晋县| 深州市| 云霄县| 郯城县|