c - MpLab C、汇编、中断定义冲突

标签 c assembly integration pic24

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

我发现这些错误

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

在哪里、何时、如何让 C 编译器为我的汇编例程提供 U1RXInterruptU2RXInterrupt

也是如此

更新,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/

相关文章:

c - 设置中断标志

assembly - 在 MIPS 中类型转换

c - 使用 EXTERN 使用混合代码的引导加载程序

sql-server - SQL 服务器 : pulling and updating local data

ios - 从 Facebook 读取信息

testing - 可以在 Katalon 中运行命令吗?

c++ - 使用 Python.h 从 C++ 调用 Django

c - 如何编写比特流

c - 1. 将 N 秒捕获的数据包保存到一个 pcap 文件中 & 2. 从 Wireshark 中的程序打印输出

assembly - 3 操作数 imul 指令在 ia-32 汇编中到底起什么作用?