我将一些新的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)
答案 0 :(得分:1)
您只能为给定的中断定义一个子例程。无论通过C代码或汇编程序定义了什么ISR,它在您的应用程序中都必须是唯一的。
因此,如果您想使用汇编程序ISR,则必须从C代码中删除另一个,或者不要将应用程序与带有它的对象或库链接起来。