历史上的今天
返回首页

历史上的今天

今天是:2025年05月13日(星期二)

正在发生

2021年05月13日 | MSP430中断c函数模板大全

2021-05-13 来源:eefocus

简介:这是一篇MSP430中断c语言函数模板,有IO口中断,定时器中断,ADC中断,USART0中断,看门狗中断,初学者可以看快照着模板入门。

端口1中断函数


多中断中断源:P1IFG.0~P1IFG7


进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断


******************************************************************************/


#pragma vector=PORT1_VECTOR


__interrupt void Port1()


{


//以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。


if((P1IFG&BIT0) == BIT0)


{


//处理P1IN.0中断


P1IFG &= ~BIT0; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT1) ==BIT1)


{


//处理P1IN.1中断


P1IFG &= ~BIT1; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT2) ==BIT2)


{


//处理P1IN.2中断


P1IFG &= ~BIT2; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT3) ==BIT3)


{


//处理P1IN.3中断


P1IFG &= ~BIT3; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT4) ==BIT4)


{


//处理P1IN.4中断


P1IFG &= ~BIT4; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT5) ==BIT5)


{


//处理P1IN.5中断


P1IFG &= ~BIT5; //清除中断标志


//以下填充用户代码


}


else if((P1IFG&BIT6) ==BIT6)


{


//处理P1IN.6中断


P1IFG &= ~BIT6; //清除中断标志


//以下填充用户代码


}


else


{


//处理P1IN.7中断


P1IFG &= ~BIT7; //清除中断标志


//以下填充用户代码


}


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


定时器A中断函数


多中断中断源:CC1~2 TA


******************************************************************************/


#pragma vector=TIMERA1_VECTOR


__interrupt void TimerA1()


{


//以下为参考处理程序,不使用的中断源应当删除


switch (__even_in_range(TAIV, 10))


{


case 2:


//捕获/比较1中断


//以下填充用户代码


break;


case 4:


//捕获/比较2中断


//以下填充用户代码


break;


case 10:


//TAIFG定时器溢出中断


//以下填充用户代码


break;


}


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


定时器A中断函数


中断源:CC0


******************************************************************************/


#pragma vector=TIMERA0_VECTOR


__interrupt void TimerA0()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


AD转换器中断函数


多中断源:摸拟0~7、VeREF+、VREF-/VeREF-、(AVcc-AVss)/2


没有处理ADC12TOV和ADC12OV中断标志


******************************************************************************/


#pragma vector=ADC_VECTOR


__interrupt void Adc()


{


//以下为参考处理程序,不使用的中断源应当删除


if((ADC12IFG&BIT0)==BIT0)


{


//通道0


//以下填充用户代码


}


else if((ADC12IFG&BIT1)==BIT1)


{


//通道1


//以下填充用户代码


}


else if((ADC12IFG&BIT2)==BIT2)


{


//通道2


//以下填充用户代码


}


else if((ADC12IFG&BIT3)==BIT3)


{


//通道3


//以下填充用户代码


}


else if((ADC12IFG&BIT4)==BIT4)


{


//通道4


//以下填充用户代码


}


else if((ADC12IFG&BIT5)==BIT5)


{


//通道5


//以下填充用户代码


}


else if((ADC12IFG&BIT6)==BIT6)


{


//通道6


//以下填充用户代码


}


else if((ADC12IFG&BIT7)==BIT7)


{


//通道7


//以下填充用户代码


}


else if((ADC12IFG&BIT8)==BIT8)


{


//VeREF+


//以下填充用户代码


}


else if((ADC12IFG&BIT9)==BIT9)


{


//VREF-/VeREF-


//以下填充用户代码


}


else if((ADC12IFG&BITA)==BITA)


{


//温度


//以下填充用户代码


}


else if((ADC12IFG&BITB)==BITB)


{


//(AVcc-AVss)/2


//以下填充用户代码


}


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


USART0发送中断函数


******************************************************************************/


#pragma vector=USART0TX_VECTOR


__interrupt void Usart0Tx()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


USART0接收中断函数


******************************************************************************/


#pragma vector=USART0RX_VECTOR


__interrupt void Usart0Rx()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


看门狗定时器中断函数


******************************************************************************/


#pragma vector=WDT_VECTOR


__interrupt void WatchDog()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


比较器A中断函数


******************************************************************************/


#pragma vector=COMPARATORA_VECTOR


__interrupt void ComparatorA()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


定时器B中断函数


多中断源:CC1~6 TB


******************************************************************************/


#pragma vector=TIMERB1_VECTOR


__interrupt void TimerB1()


{


//以下为参考处理程序,不使用的中断源应当删除


switch (__even_in_range(TBIV, 14))


{


case 2:


//捕获/比较1中断


//以下填充用户代码


break;


case 4:


//捕获/比较2中断


//以下填充用户代码


break;


case 6:


//捕获/比较3中断


//以下填充用户代码


break;


case 8:


//捕获/比较4中断


//以下填充用户代码


break;


case 10:


//捕获/比较5中断


//以下填充用户代码


break;


case 12:


//捕获/比较6中断


//以下填充用户代码


break;


case 14:


//TBIFG定时器溢出中断


//以下填充用户代码


break;


}


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


定时器B中断函数


中断源:CC0


******************************************************************************/


#pragma vector=TIMERB0_VECTOR


__interrupt void TimerB0()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


不可屏蔽中断函数


******************************************************************************/


#pragma vector=NMI_VECTOR


__interrupt void Nmi()


{


//以下为参考处理程序,不使用的中断源应当删除


if((IFG1&OFIFG)==OFIFG)


{


//振荡器失效


IFG1 &= ~OFIFG;


//以下填充用户代码


}


else if((IFG1&NMIIFG)==NMIIFG)


{


//RST/NMI不可屏蔽中断


IFG1 &= ~NMIIFG;


//以下填充用户代码


}


else //if((FCTL3&ACCVIFG)==ACCVIFG)


{


//存储器非法访问


FCTL3 &= ~ACCVIFG;


//以下填充用户代码


}


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


/*****************************************************************************


基本定时器中断函数


******************************************************************************/


#pragma vector=BASICTIMER_VECTOR


__interrupt void BasTimer()


{


//以下填充用户代码


LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽


}


推荐阅读

史海拾趣

Hind Rectifiers Ltd公司的发展小趣事

故事一:Hind Rectifiers Ltd.的起源与早期发展

Hind Rectifiers Ltd.成立于1958年,自那时起,它便与Westinghouse、Brake & Signal(英国)等知名企业建立了深厚的合作关系。这家公司在电力半导体、电力电子设备和铁路运输设备的开发、设计、制造与销售方面,迅速积累了丰富的经验和技术实力。早期,Hind Rectifiers通过不断的技术引进与自主研发,逐步确立了其在印度电力电子行业中的领先地位。其产品线逐渐丰富,包括但不限于整流器、逆变器等关键电力电子元件,为印度乃至全球的工业发展提供了重要支持。

故事二:市场拓展与国际化战略

随着印度经济的快速增长和工业化进程的加速,Hind Rectifiers Ltd.积极实施市场拓展战略。公司不仅巩固了在国内市场的地位,还逐步将目光投向了国际市场。通过参加国际展会、建立海外销售网络等方式,Hind Rectifiers的产品远销至多个国家和地区。同时,公司还加强了与国际知名企业的合作,共同研发新技术、新产品,进一步提升了其国际竞争力。

故事三:技术创新与产品升级

技术创新是Hind Rectifiers Ltd.持续发展的核心动力。公司不断加大研发投入,引进先进生产设备和技术人才,致力于电力电子产品的更新换代和技术升级。近年来,Hind Rectifiers成功推出了多款高性能、高效率的电力电子产品,如高效能整流器、智能逆变器等,这些产品不仅满足了市场对高品质电力电子产品的需求,还为公司带来了显著的经济效益和社会效益。

故事四:应对市场波动与供应链管理

面对全球经济的波动和供应链的不确定性,Hind Rectifiers Ltd.展现了其强大的应对能力。公司通过建立多元化的供应链体系、加强与供应商的合作与沟通、优化库存管理等方式,有效降低了市场风险。同时,公司还注重提升内部管理水平,加强成本控制和质量管理,确保了在复杂多变的市场环境中保持稳健发展。

故事五:社会责任与可持续发展

作为一家具有社会责任感的企业,Hind Rectifiers Ltd.始终将可持续发展视为其发展的重要方向。公司积极参与社会公益事业,关注环境保护和能源节约。通过推广绿色制造、节能减排等措施,Hind Rectifiers为印度乃至全球的可持续发展贡献了自己的力量。同时,公司还注重员工培训和职业发展,为员工提供了良好的工作环境和发展平台,促进了企业与员工的共同成长。

Control Sciences Inc公司的发展小趣事

为了确保产品质量的稳定和可靠,Control Sciences Inc建立了一套完善的质量管理体系。公司从原材料采购、生产过程到产品出厂,都实行了严格的质量控制。同时,公司还引入了先进的质量检测设备和方法,确保每一台产品都符合客户的要求。这一举措使得Control Sciences Inc的产品在市场上赢得了良好的声誉。

Custom Components Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保和可持续发展的要求也日益严格。CCI积极响应这一趋势,将绿色环保理念融入公司的战略规划和日常运营中。

公司不仅采用了环保材料和绿色生产工艺来降低产品对环境的影响,还通过优化生产流程和资源利用等方式降低能耗和排放。此外,CCI还积极参与行业环保组织和公益活动,推动整个行业向更加绿色、环保的方向发展。

Alpha Industries公司的发展小趣事

在环保意识日益增强的今天,Alpha Industries积极响应绿色生产的号召。公司利用电子技术优化生产流程,减少能源消耗和废弃物排放。此外,Alpha Industries还推出了采用环保材料制成的军事服装系列,以实际行动践行绿色环保理念。这些举措不仅有助于提升公司的社会形象,也为公司的可持续发展奠定了坚实基础。

这些故事展示了Alpha Industries如何在电子技术的推动下,不断创新并适应市场变化,进而在相关领域取得显著发展。尽管这些故事并未直接涉及电子行业的核心业务,但它们却充分体现了Alpha Industries在技术创新和市场拓展方面的积极努力和取得的成果。

启攀微电子(Chiphomer)公司的发展小趣事

在知识产权保护方面,启攀微电子高度重视自主创新能力的培养和提升。公司成立了专门的知识产权保护团队,负责申请和管理公司的专利和集成电路布图设计专有权。截至目前,公司累计申请专利已达26项,集成电路布图设计专有权54项。这些知识产权的取得不仅保护了公司的技术成果和市场地位,也为公司的持续创新提供了有力的支持。

ENSIGN公司的发展小趣事

ENSIGN的前身Skylight于1998年在上海成立,专注于商业照明领域。随着市场需求的增长,公司于2003年正式更名为ENSIGN,并开始为零售店铺提供全面的商业照明解决方案。ENSIGN凭借其创新的设计和高质量的产品,逐渐在市场中树立了良好的口碑。

问答坊 | AI 解惑

DSP处理器的选型问题

    目前市场上的主要DSP生产商包括TI、ADI、Motorola、Lucent和Zilog等,其中TI占有最大市场份额。产品包括了从低端的低速度DSP到高端的大运算量的DSP产品。目前,广泛使用的TI DSP有三个系列:C2000、C5000、C6000(C3X也有使用), ...…

查看全部问答>

转让3个日本 步进电机 比较新的 2个四相五线 1个两相四线

这两个是四项五线 EPSON打印机上拆下来的35元是两个步进电机+齿轮的价格! 日本生产: 电机型号:42SPM-24DCZC 步进角:7.5度 内阻:110 欧姆 额定电压:24伏 接近全新的步进电机,外观没什么磨损,成色很好; 电机轴带铜齿轮,每个电 ...…

查看全部问答>

超声波传感器

本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频 率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成 ...…

查看全部问答>

PCB业余制作基本方法和工艺流程

本帖最后由 paulhyde 于 2014-9-15 08:56 编辑 一、印刷电路板基本制作方法 1.用复写纸将布线图复制到复铜墙铁壁板上:复制前应先用锉刀将复铜板四周边缘锉至平直整齐,而且尺寸尽量与设计图纸尺寸相符,并将复写纸裁成与复铜板一样的尺寸,为了 ...…

查看全部问答>

请问各位达人这种方案是否可行?????

我要做一个嵌入式软件测试环境: 被测软件(C语言开发)运行在目标机器上(VxWork操作系统) 被测软件通过2个同步高速串口与外围设备B C D(下位机)相连并按照固定的周期交换数据; 通过一个异步串口和上位机A相连。 我把测试用例做成了一个文 ...…

查看全部问答>

MC1000 VS2003 开发,控件捕捉不到键盘事件,有人知道怎么解决吗?谢谢

MC1000 VS2003 开发,控件捕捉不到键盘事件,有人知道怎么解决吗?谢谢…

查看全部问答>

谁有ucosii在STM32的移植代码啊?

                                 谁有ucosii在STM32的移植代码啊?发个给大家分享下啊!谢谢…

查看全部问答>

如何学好汽车电子技术.txt

随着汽车技术的发展,尤其是计算机、网络技术的发展为汽车电子化带来了根本性的变革。当前,汽车成本的30%以上是汽车电气与电子设备的成本,并逐年增加,将达到总成本的70%。汽车电子是汽车的灵魂,汽车的电子控制单元已达到几十个,甚至上百个,极 ...…

查看全部问答>

LPC1500 LINK连不上了

LPC1500 LINK连不上了,中间用DFU刷了几次程序,不知道是不是把LPC4322的程序破坏了,怎么更新?…

查看全部问答>

【晒样片】+CC1200等芯片

昨天下的单,今天就收到了,效率挺高的。第一次用公司账号申请样片,无线射频芯片CC1200和单片机MS430FR4133以及电源管理芯片TPS6521用来做项目工业无线遥控器。基本所有的主要芯片都在了,感谢TI提供样片,感谢EEWORLD提供讯息! …

查看全部问答>