我将一些新的 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) 处理程序
最佳答案
您只能为给定中断定义一个子例程。无论 ISR 是通过 C 代码还是汇编程序定义的,它在您的应用程序中都必须是唯一的。
因此,如果您想使用汇编器 ISR,则必须从 C 代码中删除另一个 ISR,或者不将您的应用程序与带来它的对象或库链接。
关于c - MpLab C、汇编、中断定义冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370592/