#概要
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_msのus版
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 無効にしたい周期タイマ
戻り値:成功したか?
機能:周期タイマを無効にする