msp430 中的多个 ISR

Multiple ISR's in msp430

我正在使用 CCS 5.5 对 msp430g2553 进行编码。我的代码中启用了两个中断。我无法理解我应该如何为这两个中断编写两个不同的 ISR。我应该如何在我的代码中指出哪个 ISR 对应于哪个中断。 谁能帮我解决这个问题的语法?

MSP430 Optimizing C/C++ Compiler v 4.4 User's Guide 看来,您可以通过以下三种方式之一实现此目的:

使用 GCC __attribute__ 语法:

#define TIMER_A0 20
volatile int tick = 0 ;
__attribute__((interrupt(TIMER_A0))) void tick_isr() 
{
    tick++ ;
}

使用 __interrupt + #pragma vector:

#define TIMER_A0 20
volatile int tick = 0 ;
#pragma vector=TIMER_A0
__interrupt void tick_isr( void )
{
    tick++ ;
}

使用 #pragma interrupt + #pragma vector:

#define TIMER_A0 20
volatile int tick = 0 ;
#pragma interrupt( tick_isr )
#pragma vector=TIMER_A0
void tick_isr( void )
{
    tick++ ;
}

GCC 语法可能是最简单的。请注意,#pragma interrupt 的语法在 C++ 代码中有所不同:

#pragma interrupt
#pragma vector=TIMER_A0
void tick_isr( void )
{
    tick++ ;
}