LoginSignup
0
0

More than 3 years have passed since last update.

Raspberry Pi Pico C/C++ SDKのタイマ用関数のまとめ

Posted at

概要

Raspberry Pi Pico C/C++ SDKのタイマ用関数のメモ
公式ドキュメントのRaspberry Pi Pico C/C++ SDK「4.1.22. hardware_timer」「4.2.12. repeating_timer」の中から
とりあえずよく使うフリーランニングタイマ、周期タイマ関係のみ抜粋。よくわからない部分が多いです。

フリーランタイマ

関数

static uint32_t time_us_32 (void)
引数:なし
戻り値:1カウント1us,32bitタイマのカウント値
機能:1カウント1us,32bitタイマのカウント値を取得
     64bitタイマの下位32bitを読みだしている
uint64_t time_us_64 (void)
引数:なし
戻り値:1カウント1us,64bitタイマのカウント値
機能:1カウント1us,64bitタイマのカウント値を取得
     ※内部的にはまず上位32bitを読み出し,その後下位32bit読み出しているため
      タイミングによっては上位,下位の同期が取れない可能性があり一致待ちのループをしている
      特に必要がない限りtime_us_32を使った方がよさそう
void busy_wait_us_32 (uint32_t delay_us)
引数:uint32_t delay_us 待ちたい時間[us]
戻り値:なし
機能:時間経過するまで無限ループ
void busy_wait_us (uint64_t delay_us)
引数:uint32_t delay_us 待ちたい時間[us]
戻り値:なし
機能:時間経過するまで無限ループ
void busy_wait_until (absolute_time_t t)
引数:absolute_time_t t 1カウント1us,64bitタイマカウント値の構造体
戻り値:なし
機能:64bitタイマカウント値が指定された値になるまで無限ループ
     電源投入からXXus待ちたいときに使う?
static bool time_reached (absolute_time_t t)
引数:absolute_time_t t 1カウント1us,64bitタイマカウント値の構造体
戻り値:タイマカウント値が指定した値に到達したか?
機能:タイマカウント値が指定した値に到達したかを判定する
     電源投入からXXus経過したか判定したいときに使う?

周期タイマ

関数

static bool alarm_pool_add_repeating_timer_ms (alarm_pool_t *pool, int32_t delay_ms, repeating_timer_callback_t
callback, void *user_data, repeating_timer_t *out)
引数:alarm_pool_t *pool (よくわからない.アラームの設定情報?)
     int32_t delay_ms タイマ周期[ms]
                       >0の場合はコールバック処理終了→コールバック処理開始間の時間
                         <0の場合はコールバック処理開始→コールバック処理開始間の時間
                         =0の場合は1us
     repeating_timer_callback_t callback コールバック関数(割り込み関数)
     void *user_data (よくわからない)
     repeating_timer_t *out 周期タイマの設定情報
戻り値:設定成功したか?
機能:1ms単位周期タイマを設定する。
bool alarm_pool_add_repeating_timer_us (alarm_pool_t *pool, int64_t delay_us, repeating_timer_callback_t callback,
void *user_data, repeating_timer_t *out)
    alarm_pool_add_repeating_timer_msus
static bool add_repeating_timer_ms (int32_t delay_ms, repeating_timer_callback_t callback, void *user_data,
repeating_timer_t *out)
    alarm_pool_add_repeating_timer_msのデフォルトpool使用版
static bool add_repeating_timer_us (int64_t delay_us, repeating_timer_callback_t callback, void *user_data,
repeating_timer_t *out)
    alarm_pool_add_repeating_timer_usのデフォルトpool使用版
bool cancel_repeating_timer (repeating_timer_t *timer)
引数:repeating_timer_t *timer 無効にしたい周期タイマ
戻り値:成功したか?
機能:周期タイマを無効にする
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0