历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | MSP430中断参数

2020-02-06 来源:eefocus

MSP430中断参数


1.中断向量入口参数

typedef enum

{

  VECTOR_RTC      =41u, /*  RTC */

  VECTOR_PORT2        , /*  Port 2 */

  VECTOR_TIMER2_A1    , /*  Timer0_A5 CC1-4, TA */

  VECTOR_TIMER2_A0    , /*  Timer0_A5 CC0 */

  VECTOR_USCI_B1      , /*  USCI B1 Receive/Transmit */

  VECTOR_USCI_A1      , /*  USCI A1 Receive/Transmit */

  VECTOR_PORT1        , /*  Port 1 */

  VECTOR_TIMER1_A1    , /*  Timer1_A3 CC1-2, TA1 */

  VECTOR_TIMER1_A0    , /*  Timer1_A3 CC0 */

  VECTOR_DMA          , /*  DMA */

  VECTOR_USB_UBM      , /*  USB Timer / cable event / USB reset */

  VECTOR_TIMER0_A1    , /*  Timer0_A5 CC1-4, TA */

  VECTOR_TIMER0_A0    , /*  Timer0_A5 CC0 */

  VECTOR_ADC12        , /*  ADC */

  VECTOR_USCI_B0      , /*  USCI B0 Receive/Transmit */

  VECTOR_USCI_A0      , /*  USCI A0 Receive/Transmit */

  VECTOR_WDT          , /*  Watchdog Timer */

  VECTOR_TIMER0_B1    , /*  Timer0_B7 CC1-6, TB */

  VECTOR_TIMER0_B0    , /*  Timer0_B7 CC0 */

  VECTOR_COMP_B       , /*  Comparator B */

  VECTOR_UNMI         , /*  User Non-maskable */

  VECTOR_SYSNMI       , /*  System Non-maskable */

  VECTOR_RESET        , /*  Reset [Highest Priority] */

  /************************为使用方便,下面对部分常用功能进行定义**************************************************/

  //IO口

  VECTOR_P1            = VECTOR_PORT1,

  VECTOR_P2            = VECTOR_PORT2,

  //SPI

  VECTOR_SPI0          = VECTOR_USCI_A0,

  VECTOR_SPI1          = VECTOR_USCI_A1,

  VECTOR_SPI2          = VECTOR_USCI_B0,

  VECTOR_SPI3          = VECTOR_USCI_B1,

  //I2C

  VECTOR_I2C0          = VECTOR_USCI_B0,

  VECTOR_I2C1          = VECTOR_USCI_B1,

  //UART

  VECTOR_UART0         = VECTOR_USCI_A0,

  VECTOR_UART1         = VECTOR_USCI_A1,

  //TIMER,注意定时器有两个中断向量,CCR0单独占用一个中断向量,其他中断源共同使用一个中断向量

  VECTOR_TIMER_A0      = VECTOR_TIMER0_A1,

  VECTOR_TIMER_A0_CCR0 = VECTOR_TIMER0_A0,

  VECTOR_TIMER_A1      = VECTOR_TIMER1_A1,

  VECTOR_TIMER_A1_CCR0 = VECTOR_TIMER1_A0,

  VECTOR_TIMER_A2      = VECTOR_TIMER2_A1,

  VECTOR_TIMER_A2_CCR0 = VECTOR_TIMER2_A0,

  VECTOR_TIMER_B0      = VECTOR_TIMER0_B1,

  VECTOR_TIMER_B0_CCR0 = VECTOR_TIMER0_B0,

}VECTORn;         //中断向量



2.设置中断向量地址

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

*  函数名称:Set_Vector_Handler(VECTORn vector,__interrupt void pfunc_handler(void))

*  功能说明:设置中断向量地址

*  参数说明:

            VECTORn vector  :中断向量(枚举变量,见.h文件)

            __interrupt void pfunc_handler(void)  : 中断服务函数

*  函数返回:无

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

void Set_Vector_Handler(VECTORn vector, __interrupt void pfunc_handler(void))

{

  if(SYSX->RIVECT == DISABLE)        //如果没有设置中断向量表到RAM,则设置

  {

    Set_VectorTable_To_RAM();                       //设置中断向量表到RAM

  }

  //此处若有警告可忽略

  __VECTOR_RAM[vector] = (ISR_TYPE)pfunc_handler;     //设置该中断向量地址

}


3.使用实例

3.1 GPIO实例

Set_Vector_Handler(VECTOR_PORT1,GPIO_IRQ_Handler);    

//设置PPORT1中断服务函数为GPIO_IRQ_Handler,需要先定义中断服务函数,另外最好先设置中断向量,再开启中断


3.2 定时器实例

Set_Vector_Handler(VECTOR_TIMER0_B0,TIMER_TB0_IRQ_Handler);    //设置中断向量,最好先设置中断向量,在开启中断


__interrupt void TIMER_TB0_IRQ_Handler()

{

  LED_Turn(LED1);               //指示灯闪烁

}


3.3 ADC中断实例

ADC_Init(ADC_CH2,ADC_VREF_3_3V,ADC_10bit);       //初始化通道,P6.2

Set_Vector_Handler(VECTOR_ADC12,ADC_IRQ_Handler);

ADC_ITConfig (ADC_CH2,ENABLE);


ADC_StartConv();

OLED_PrintfAt(FONT_ASCII_6X8,0,0,"ADValue:n%f V",ad);         //在指定位置打印


__interrupt void ADC_IRQ_Handler()

{

   if(ADC_GetITStatus(ADC_CH2) == TRUE)

   {

      ad = ADC_ReadChanelValue (ADC_CH2)*3.3/1023;   //读取后会自动清除标志位

      ADC_ClearITPendingBit(ADC_CH2);

   }

}

推荐阅读

史海拾趣

ELMEC Technology Of America Inc公司的发展小趣事

随着产品的不断完善,ELMEC开始考虑如何进一步拓展市场。然而,国际市场的竞争异常激烈,ELMEC的产品面临着来自各大跨国公司的挑战。为了打开市场,李明带领团队深入调研,了解客户需求,不断优化产品性能。同时,他们还积极参加各类国际展会,与潜在客户建立联系。经过几年的努力,ELMEC的产品逐渐获得了市场的认可,销售额也稳步增长。

GE Sensing ( Amphenol Advanced Sensors )公司的发展小趣事

随着产品的不断完善,ELMEC开始考虑如何进一步拓展市场。然而,国际市场的竞争异常激烈,ELMEC的产品面临着来自各大跨国公司的挑战。为了打开市场,李明带领团队深入调研,了解客户需求,不断优化产品性能。同时,他们还积极参加各类国际展会,与潜在客户建立联系。经过几年的努力,ELMEC的产品逐渐获得了市场的认可,销售额也稳步增长。

Amphenol Aerospace公司的发展小趣事

在ELMEC看来,产品质量是企业的生命线。为了确保产品的可靠性和稳定性,公司建立了一套完善的质量管理体系。从原材料采购到产品生产、从质量控制到售后服务,每一个环节都经过严格把控。同时,ELMEC还积极引进国际先进的质量管理方法和标准,不断提高产品的整体质量水平。这些努力使得ELMEC的产品在市场上享有很高的声誉。

Elpress AB公司的发展小趣事

Elpress AB公司成立于1959年,由一群具有前瞻性和创新精神的工程师在瑞典的克拉姆福什市创立。公司从成立之初就专注于电气连接系统的研发和生产,致力于为电力行业提供高效、可靠的解决方案。在初期,Elpress AB凭借其专业的技术能力和对质量的严格把控,逐渐在市场上赢得了客户的信赖。

Everspin公司的发展小趣事

尽管Everspin在初期经历了亏损,但随着时间的推移,其财务状况逐渐改善。特别是在XXXX年和XXXX年,Everspin的总收入和净利润均实现了显著增长。这一财务表现证明了Everspin在MRAM领域的领先地位和持续盈利能力。

BLT Circuit Services公司的发展小趣事

品质一直是BLT Circuit Services公司的核心竞争力。公司注重品质管理,建立了严格的质量控制体系,从原材料采购到生产过程中的每一个环节都进行严格把关。正是这种对品质的执着追求,使得BLT Circuit Services的产品在行业内赢得了良好的口碑,为公司赢得了大量的忠实客户。

问答坊 | AI 解惑

硬件工程师如何转变成一个项目经理zt (转)

项目经理掌控着产品从立项、开发到市场,到技术支持等整个环节。硬件工程师要想成为一个项目经理除了要拓宽自己的知识面,提高自己的技术外,要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等 ...…

查看全部问答>

rom 仿真的问题

大家好,向大家请教一个问题。 我用quartus中的MegaWizard产生一个ROM,也在其中指定了mif文件,最后产生一些文件。请问,如何在VCS中对这个ROM进行仿真。请大家具体讲一下,如果有相关的文档推荐,就更好了,谢谢。…

查看全部问答>

恭喜91program担任WINCE斑竹,散份!

恭喜91program担任WINCE斑竹,散份! 希望大家多多支持啊。。…

查看全部问答>

求救用ucosii编写任务后,只在默认的任务中运行

各位高手,我在用ucosii编写任务后,只在默认的任务中运行,只是程序在开始时,执行了一次任务,后来虽然设了很高的优先级,也回不来了,这个问题困我好久了,请好心的高手指点下,不胜感激!…

查看全部问答>

MSP430的可屏蔽中断

    中断很大程度上体现了一款单片机的性能,从这一点将MSP430在中断方面做得很不错,主要是提供了非常丰富的中断源,基本的有IO中断,定时器中断和一些接口中断(SPI,UART,I2C)等等。    现在我就谈谈关于MSP430 ...…

查看全部问答>

串口波特率设为115200输出乱码

                                 如题,使用万利的板子,usart1,修改为57600及以下的波特率正常。是什么问题呢?…

查看全部问答>

falsh断电后再上电就不能正常引导是什么原因

flash烧写好了,只要不断电就正常工作,但是只要一断电就不能工作,这是什么原因啊 …

查看全部问答>

此番功夫仍敌不过用模拟电路?单片机无闪烁调光如何做

 今天忙活1天了,想做一个单片机控制的无闪烁调光电路。图如下:…

查看全部问答>

推荐个TI的产品更换网址

对TI的控制器产品有个非常简洁概要的介绍,并且以这个为入口有很多的参考方案,非常方便使用。链接如下:http://www.ti.com/ww/en/mcu/maketheswitch/index.shtml?DCMP=Switch&HQS=Other+BA+maketheswitch-b…

查看全部问答>