カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。
Raspberry Pi Pico の C/C++ SDK のドキュメントを読んでて、Timer による繰り返し処理ができそうやったのでやってみました。4.2.12 repeating_timerに出てくる関数を使います。 static bool add_repeating_timer_ms (int32_t delay_ms, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out) で定義されるadd_repeating_timer_ms関数を使います。これだけ見ててもさっぱり分からなかったので、4.1.22. hardware_timerのソースを見たところ何とか使い方が分かりました。 delay_msは Timer の呼び出し周期[ms]です。これは分かる。 callbackは Timer が呼び出し周期毎に呼び出すコールバック関数です。ただし、関数の型が何だか分からん型なのですが、hardware_timerの例を見ると、bool 型でよいようです。 *user_dataはコールバック関数で使うための変数のようですが、よく分かりません。(^^; NULLで呼べばよいようです。 *outはrepeating_timer_t型の変数を定義してポインタを渡します。Timer を停止したりするときに使うみたい。 ざっくり書くと、 bool callback_foo( struct repeating_timer *t ) { コールバック処理 } int main() { repeating_timer_t timer; // timer変数の定義 add_repeating_timer_ms( 1000, callback_foo, NULL, &timer ); // Timerの起動 return 0; } というような書き方をすると、1000[ms]毎に callback_foo が呼ばれてコールバック処理が実行されます。 サンプルとして、500[ms] 毎にオンボードの温度センサ値を読み、カウンタを動かし、LEDの状態をトグルして、I2C LCDに温度とカウンタ値を表示するプログラムを作成しました。GitHubのリポジトリにソース一式を置きます。 Timer による Lチカ+α Timer を使えば一定時間毎の繰り返し処理が楽になります。 --- 20:15 --- お気に入りの記事を「いいね!」で応援しよう
Last updated
February 16, 2021 09:14:28 PM
コメント(0) | コメントを書く
[作りモノ] カテゴリの最新記事
|
|