MpLab C,汇编,中断定义冲突

时间:2013-03-12 19:39:20

标签: c assembly integration pic24

我将一些新的C软件例程与现有的汇编语言安排放在一起。

我发现了这些错误

    multiple definition of `_U1RXInterrupt'
    multiple definition of `_U2RXInterrupt'
    multiple definition of `_U3RXInterrupt'

在哪里,何时,如何让C编译器让我拥有U1RXInterrupt的汇编程序?同上U2RXInterrupt

更新,2013-MAR-13

刚刚在C代码中找到了这个。这是我问题的根源吗?如果我拿走这个,我的冲突会结束吗?

   //********************U1RX interrupt********************************//
   void __attribute__ ((interrupt, no_auto_psv)) _U1RXInterrupt(void) 
   {
    IFS0bits.U1RXIF = 0;
    U1Buf_RX=U1RXREG;
    //putcharUART2(U1Buf_RX);
   }

我希望我的汇编语言例程能够处理Uart 1

我猜我会为U2RXInterrupt找到一个类似的处理程序(void)

1 个答案:

答案 0 :(得分:1)

您只能为给定的中断定义一个子例程。无论通过C代码或汇编程序定义了什么ISR,它在您的应用程序中都必须是唯一的。

因此,如果您想使用汇编程序ISR,则必须从C代码中删除另一个,或者不要将应用程序与带有它的对象或库链接起来。