0

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

我发现这些错误

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

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

更新,2013 年 3 月 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) 找到一个类似的处理程序

4

1 回答 1

1

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

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

于 2013-03-13T15:09:29.763 回答