System timer (SysTick) support (systick.h)
システムタイマー
データ型
■ struct systick_reg_map SysTickレジスタマップ型
パブリックメンバー
__io uint32 CSR Systick制御・ステーテスレジスタ
__io uint32 RVR Systick再設定値レジスタ
__io uint32 CVR Systick校正値レジスタ
__io uint32 CNT Systick現在値レジスタ
デバイス
なし
グローバル変数
■ extern volatile uint32 systick_uptime_millis
システム経過時間(ミリ秒)
API関数
■ void systick_init(uint32 reload_val)
SysTickを初期化して有効にします。
システムタイマーをコアクロックでクロックし、オンにし、割り込みをイネーブルにします。
引数
reload_val :タイマーカウンタの初期値(1ミリ秒単位)
■ void systick_enable()
クロックを使用してシステムタイマーのカウント開始します。
グローバル変数 systick_timer_millisに対して、1msごとに割り込みを発生します。
■ void systick_disable()
クロックを使用してシステムタイマーのカウントは行いますが、1msごとに割り込みは発生しません。
ただし、割り込みは有効にはなりません。
■ uint32 systick_uptime(void)
システムの稼働時間をミリ秒単位で返します。
■ uint32 systick_get_count(void)
SysTickカウンタの現在の値を返します。
■ uint32 systick_check_underflow(void)
アンダーフローを確認します。
この関数は、SysTickタイマーが最後に呼び出されてから0にカウントされた場合に1を返します。 ただし、SysTick制御およびステータスレジスタSYSTICK_BASE-> CSRのいずれかの部分を読み取ると、この機能が妨げられます。 詳細については、ARM Cortex M3テクニカルリファレンスマニュアル(例:リビジョンr1p1の表8-3)を参照してください。
■ void systick_attach_callback(void (*callback)(void))
SysTick割込みから呼び出されるコールバック関数をアタッチします。
コールバックをデタッチするには、null引き数を指定してこの関数を再度呼び出します。
引数
callback :アタッチする関数のポインタ
(注意)SysTick割込み中は、全ての割り込みを禁止しています。コールバック関数内で他の割り込み処理を伴うコードの記述にはご注意下さい。また、コールバック関数は短時間で処理が終了する場合のみ利用して下さい。
レジスタマップベースポインタ
■ SYSTICK_BASE ((struct systick_reg_map*)0xE000E010)
SysTickレジスタマップの基本ポインタ
レジスタのビット定義
Systick制御・ステーテスレジスタ
■ #define SYSTICK_CSR_COUNTFLAG BIT(16)
■ #define SYSTICK_CSR_CLKSOURCE BIT(2)
■ #define SYSTICK_CSR_CLKSOURCE_EXTERNAL 0
■ #define SYSTICK_CSR_CLKSOURCE_CORE BIT(2)
■ #define SYSTICK_CSR_TICKINT BIT(1)
■ #define SYSTICK_CSR_TICKINT_PEND BIT(1)
■ #define SYSTICK_CSR_TICKINT_NO_PEND 0
■ #define SYSTICK_CSR_ENABLE BIT(0)
■ #define SYSTICK_CSR_ENABLE_MULTISHOT BIT(0)
■ #define SYSTICK_CSR_ENABLE_DISABLED 0
Systick校正値レジスタ
■ SYSTICK_CVR_NOREF BIT(31)
■ SYSTICK_CVR_SKEW BIT(30)
■ SYSTICK_CVR_TENMS 0xFFFFFF
関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。