次の MBED ベースの C++ プログラムは、Nucleoboard マイクロコントローラー用に取り組んでいるより詳細なプロジェクトの実験として作成しました。
#include "mbed.h"
DigitalOut greenLed(PA_5);
#include "mbed.h"
class TimedLED
{
public:
TimedLED()
{
Ticker t;
t.attach_us(this, &TimedLED::flip, 1000000);
}
void flip(void)
{
static int count = 0;
greenLed.write(count%2); //-- toggle greenLed
count++;
}
};
int main()
{
TimedLED flash;
while (1);
}
私が見たすべての参照は、 t.attach_us(this, &TimedLED::flip, 1000000) がメソッドを呼び出す必要があることを示しているようで、毎秒「フリップ」し、LED のオンとオフを切り替えます。しかし、これは起こっていません。何が問題なのかわかりません。誰かがこれを解決するのを手伝ってくれることを願っています。
この形式が非推奨であることを示す次の警告メッセージが表示されますが、ドキュメントへのリンクが壊れているため、詳細を取得できませんでした:
Function "mbed::Ticker::attach_us(T *, M, us_timestamp_t) [with T=TimedLED, M=void(TimedLED::*)()]" (declared at /extras/mbed_fd96258d940d/drivers/Ticker.h:122) was declared "deprecated" "t.attach_us(this, &TimedLED::flip, 1000000);"
廃止されたとしても、まだ機能するはずですよね?また、おそらく非推奨メッセージが正しい場合、同じことを行う新しい方法があります。どこにも代替方法への参照が見つかりません。