Bubble, bubble, toil and cuddle !!!

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

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


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Keyword Search

▼キーワード検索

Category

Favorite Blog

まだ登録されていません

Comments

wiskij@ Re:CH341AでVersaPro VX-UのBIOSチップ内容を読み取った(08/04) 再びGL245UFASを開いてCH341Aのコンタクト…
wiskij@ Re:CH341AでVersaPro VX-UのBIOSチップ内容を読み取った(08/04) こんばんは。NECのGL245UFAS半ジャンクを…
sorriman @ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 情報ありがとうございます。 また自宅を2…
Wi-Fiアンテナは多分入ってると思います。@ Re:HP ProDesk 400 G4 DM をセットアップした(01/13) 始めまして。 この機種はまだお使いでしょ…
通りすがりの者です@ Re:LIFEBOOK U939/B に WANカードを載せた(01/21) 私のLIFEBOOKではnanoSIMを装着後に再起動…

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: