10

mspgcc で割り込みハンドラを宣言するための推奨される方法は何ですか?

4

2 に答える 2

7

この情報は MSPGCC v4.6.3 に適用されることに注意してください。これは、現在 code composer studio で配布されている MSPGCC の Ti/Redhat/SOMNIUM ポートより前の日付です。

この回答については、Mspgcc-users メーリング リストの Peter Bigot に感謝します。

次の 2 つの可能性があります。

A. _ コード コンポーザ スタジオ スタイルの構文を使用します (CCS に移植できるという追加の利点があります)。

#pragma vector=TIMER0_A0_VECTOR    
__interrupt void
ta0cc0_isr (void)

(これは、Mspgcc のバージョン 20120406 前後で導入されたことに注意してください)。

B. _ ネイティブの gcc 構文を使用します。

static void
__attribute__((__interrupt__(TIMER0_A0_VECTOR)))
isr_cc0_TA0 (void)

C. _ ベクタ テーブルに含まれるように、関数に正しい名前を付けます (ASM 関数に役立ちます)。

割り込み属性により、関数に名前が付けられます__isr_X。ここで、X はベクタ テーブルの開始点からの割り込みのワード オフセットです (割り込み属性のパラメータの値を 2 で割った値に等しい)。

これらの__isr_Xシンボルは、crt0ivtbl.o のベクター テーブルを初期化するために使用されます。

于 2013-03-19T13:27:40.803 に答える