4505785 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

Bubble, bubble, toil and cuddle !!!

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
February 16, 2021
XML
カテゴリ:作りモノ
今日は早めで帰宅は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で呼べばよいようです。

*outrepeating_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) | コメントを書く
[作りモノ] カテゴリの最新記事


PR

Keyword Search

▼キーワード検索

Free Space

Category

Favorite Blog

まだ登録されていません

Comments

通りすがりの者です@ Re:LIFEBOOK U939/B に WANカードを載せた(01/21) 私のLIFEBOOKではnanoSIMを装着後に再起動…
aki@ Re:秋葉原に寄った(01/14) この様な書込大変失礼致します。日本も当…
BOOSAN@ Re:SPY x FAMILY CODE:White を観た(01/08) 私は明日、PERFECT DAYS観ます。ビム・ベ…
かいじゅう@ Re:dynabook T55 にインストールした PearOS Monterey が起動するようになった(06/15) 同じくpear osで画面が出なくて困ってまし…

Freepage List


© Rakuten Group, Inc.