クラスメソッドを割り込みサービスルーチンとして使用できますか?そして、実装をクラスメソッドを使用するC++ ISR?
void interrupt far ISR(...);
::メソッド(プロトタイプ)を作成するために、私はC++で試してみた
static void interrupt far ISR(...) {}
:
私は、ISRが書かれており、機能を使用してCで働いてい
#pragma interrupt
void interrupt far MyClass::ISR(...) {
...
}
「setvect」でこれを使用しようとすると、さまざまなエラーが発生します。
setvect(muint16Vector, &ISR);
ISRはシリアルポートをサービスするクラスを作成しようとしていますが、ISRはポートからのRxデータを処理します。 ISRはインスタンス固有のメンバーを使用します。
私は3つのシリアルポートを持っているので、クラスの3つのインスタンスを作成したいと思います。あなただけの時に呼び出すためのインスタンスであるグローバル変数を作成する必要があり
非静的メンバー関数は、クラスの*インスタンス*で呼び出す必要があります。非メンバ関数ポインタとしては使用できません。静的メンバー関数でラップするか、C言語のように実際の非メンバ関数を使用してください。 –
@Someprogrammerdude、もう少し詳しく説明するテキストを追加します。ありがとうございます。 – SPlatten
どのような引数が割り込みハンドラに渡されますか?引数の1つがシリアルポート番号である場合は、オブジェクトの配列を使用し、シリアルポート番号引数を使用してその配列にインデックスを付け、実際のメンバ関数を呼び出すことができます。 –