

#include <nitro/os.h>
void OS_SetAlarm(
OSAlarm* alarm,
OSTick tick,
OSAlarmHandler handler,
void* arg );
| alarm | アラームを設定するアラーム構造体へのポインタ |
| tick | アラームが発動する(handler が呼ばれる)までのチックカウント |
| handler | アラームハンドラ |
| arg | アラームハンドラが呼ばれるときの引数 |
なし。
ワンショットのアラームを設定します。
tick で指定したチックカウント後、handler が呼び出されます。handler は、
typedef void (*OSAlarmHandler)( void* );
で定義された OSAlarmHandler 型の関数です。handler が呼び出されるとき、arg を引数に取ります。handler は OS のタイマ割り込みのハンドラから呼び出されます。従って割り込みは禁止状態となっています。
チックカウントの1単位はハードウェアのシステムクロックの64分周です。
すでにアラームがセットされている OSAlarm構造体へのポインタを alarm に指定した場合、OS_Panic() で停止します。
下の例では、アラームを設定することで 0.5秒後にhandler() が呼び出され、"handler called. arg=0x12345678" と表示されます。
(例)
#define COUNT OS_MilliSecondsToTicks( 500 )
#define ARG 0x12345678
OSAlarm alarm;
main()
{
:
OS_InitTick();
OS_InitAlarm();
:
OS_CreateAlarm( &alarm );
OS_SetAlarm( &alarm, COUNT, handler, (void*)ARG );
:
}
void handler( void* arg )
{
OS_Printf( "handler called. arg=0x%x\n", arg );
}
OS_InitAlarm, OS_CancelAlarm,
OS_SetPeriodicAlarm, OS_SetAlarmTag
OS_*SecondsToTicks
2005/03/08 用語統一 [割込み] → [割り込み]
2004/12/22 アラームハンドラはタイマ割り込みのハンドラから呼び出される記述を追加
2004/08/30 セットされているアラーム構造体は使用できない記述を追加
2004/02/25 systemClock→tick に
2004/02/04 初版