タイマ

タイマ APIでは、システム起動からの経過時間の取得、およびタイマの登録/解除ができます。

タイマで登録した関数は、コアサービスが内部で所有しているスタックを使用して、SVCモードで呼び出されます。

タイマタイプ

SOLID_TIMER_TYPE_ONESHOT
SOLID_TIMER_TYPE_INTERVAL

定数

名前 説明
SOLID_TIMER_TYPE_ONESHOT 0 ワンショットタイマ : 自動的に登録解除
SOLID_TIMER_TYPE_INTERVAL 1 インターバルタイマ : UnRegisterするまで定期的に呼ばれる

SOLID_TIMER_HANDLER

typedef struct _SOLID_TIMER_HANDLER_ SOLID_TIMER_HANDLER

説明

タイマ登録用ハンドラ

定義

typedef struct _SOLID_TIMER_HANDLER_ {
    struct _SOLID_TIMER_HANDLER_ *pNext;
    struct _SOLID_TIMER_HANDLER_ *pCallQ;
    unsigned long nextticks;
    unsigned long toticks;
    int type;
    unsigned long time;
    void (*func)(void*, SOLID_CPU_CONTEXT*);
    void* param;
} SOLID_TIMER_HANDLER;

メンバー

pNext
SOLID側で使用
pCallQ
SOLID側で使用
nextticks
SOLID側で使用
toticks
SOLID側で使用
type
タイマのタイプ(SOLID_TIMER_TYPE_XXX)
time
タイマ通知をする時間(usec)
func
タイマ通知時に呼び出される関数
param
タイマ通知時に呼び出される関数のパラメータ

SOLID_TIMER_GetCurrentTick

unsigned long long SOLID_TIMER_GetCurrentTick()

タイマの現在の経過tickを取得します

戻り値:現在のtick値

SOLID_TIMER_ToUsec

unsigned long long SOLID_TIMER_ToUsec(unsigned long long ticks)

tick値から時間(usec)に変換します

パラメータ:ticks – tick値
戻り値:変換した時間(usec)

SOLID_TIMER_RegisterTimer

int SOLID_TIMER_RegisterTimer(SOLID_TIMER_HANDLER *pHandler)

タイマを登録します

パラメータ:pHandler – 登録するタイマの情報(関数呼び出し後も保持する必要があります)
戻り値:

SOLID_TIMER_UnRegisterTimer

int SOLID_TIMER_UnRegisterTimer(SOLID_TIMER_HANDLER *pHandler)

タイマの登録を解除します

ワンショットタイマの場合、自動的に解除されますのでこの関数を呼び出す必要はありません

パラメータ:pHandler – 登録時に使用したタイマの情報
戻り値:

SOLID_TIMER_WaitNsec

void SOLID_TIMER_WaitNsec(unsigned long nsec)

指定された時間(nsec)以下を待ちます(ビジーループ)

パラメータ:nsec – 待ち時間

IMPL_TIMER_INFO

typedef struct _IMPL_TIMER_INFO_ IMPL_TIMER_INFO

説明

タイマ情報の構造体

定義

typedef struct _IMPL_TIMER_INFO_ {
     unsigned long tickspersec;
     unsigned long maxticks;
     int intno;
     int priority;
     int config;
} IMPL_TIMER_INFO;

メンバー

tickspersec
1秒当たりのtick数
maxticks
タイマで設定可能な最大tick数
intno
タイマ発火時の割り込み番号
priority
タイマの割り込み優先度
config
タイマの割り込み設定: SOLID_INTC_HANDLER 参照

IMPL_TIMER_Init

void IMPL_TIMER_Init(IMPL_TIMER_INFO *pInfo)

SOLID用のタイマを初期化します

初期化後、pInfo にタイマに関する情報を格納してください

パラメータ:pInfo – タイマの情報

IMPL_TIMER_GetTimerTick

unsigned long IMPL_TIMER_GetTimerTick()

直前の IMPL_TIMER_SetTimer() からの経過時間(tick数)を返してください

戻り値:経過したtick数

IMPL_TIMER_SetTimer

void IMPL_TIMER_SetTimer(unsigned long ticks)

タイマを設定します

設定時間が経過したら、IMPL_TIMER_Init() で通知した割り込みを発生させてください

パラメータ:ticks – 設定するタイマ値(tick数)

IMPL_TIMER_ClearInterrupt

void IMPL_TIMER_ClearInterrupt(void)

タイマの割り込みをクリアします

割込み発生時にタイマ内部の割込みクリア・終了処理が必要な場合は後処理を実装してください