您的位置 首页 开关

MSP430中止服务函数的界说

为了保证代码可以在IAR编译器的任何版本中都能正确得到编译,所以作以下的条件编译。ifdef__IAR_SYSTEMS_ICC__如果编译器是IAR,

//为了确保代码能够在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中止函数声明完毕。

{ }


在上述中

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捕获/比较数据寄存器数据
}

//程序完毕
//**************************************************************************

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/257007.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部