割り込みを使用してPWMデューティを計算するライブラリを作成しようとしています。私はクラスメンバーがattachInterruptの関数の正しいフォーマットではないことを理解しています。クラス内の割り込み
しかし、私の周りに仕事を持っているNick Gammon、でこのポストCalling an ISR from a classに従うことを試してみましたが、イライラ、私はまだエラーを取得しています:
cannot declare member function 'static void PWMin::risingInt()' to have static linkage
誰かがと間違っているものにいくつかの光を当てるてくださいすることができ私のコードまたは他の提案?
これは、cppのファイルです:あなたがstatic
としてあなたの関数を宣言している、あなたのヘッダファイルで
#ifndef PWMin_h
#define PWMin_h
class PWMin {
public:
PWMin(int intPin, int* outputTime, bool direction);
unsigned long lastElapsedTime();
private:
static PWMin *instance;
int _intPin;
int* _outputTime;
bool _direction;
unsigned long start, timeElapsed;
void attachInt();
void risingISR();
void fallingISR();
static void risingInt();
static void fallingInt();
};
#endif /* PWMin_h */
おかげで、 ショーン
あなたが行ったように、クラス定義にメンバ関数を 'static'で入れます。行外関数の本体でそれを繰り返さないでください –
@ M.M申し訳ありませんが、私はあなたが「行外関数体」と言うときには厳密に従っていません。あなたはもっと詳しく説明できますか?ありがとう –
'static void PWMin :: risingInt(){'と 'static void PWMin :: fallingInt(){' –