0

いくつかの新しい C ソフトウェア ルーチンを、既存のアセンブリ言語の配置と一緒に配置しています。

私はこれらのエラーを見つけています

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

U1RXInterruptいつ、どこで、どのように C コンパイラにアセンブリ ルーチンを持たせることができますか? 同上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

特定の割り込みに対して定義できるサブルーチンは 1 つだけです。C コードまたはアセンブラーを使用して ISR を定義する場合は、アプリケーション内で一意にする必要があります。

したがって、アセンブラー ISR を使用する場合は、C コードから他の ISR を削除するか、それをもたらすオブジェクトまたはライブラリーにアプリケーションをリンクしないようにする必要があります。

于 2013-03-13T15:09:29.763 に答える