# OS_SetPeriodicAlarm

## 構文

      #include <nitro/os.h>

      void OS_SetPeriodicAlarm(
                      OSAlarm*        alarm,
                      OSTick          start,
                      OSTick          period,
                      OSAlarmHandler  handler,
                      void*           arg );

## 引数

alarm | アラームを設定するアラーム構造体へのポインタ
start | 最初にアラームが発動する(ハンドラを呼び出す)チックカウント(現在からの相対値ではなく絶対値)
period | 周期的にアラームを発動させる間隔
handler | アラームハンドラ
arg | アラームハンドラが呼ばれる際の引数

## 返り値

なし。

## 説明

周期的なアラームを設定します。

最初にhandler が呼び出されるタイミングは、チック値が start になった時で、それ以降はチックのperiod カウントごとに呼び出されます。handler は、

> `typedef void (*OSAlarmHandler)( void* );`

で定義された `OSAlarmHandler` 型の関数です。handler が呼び出されるとき、arg を引数に取ります。handler は OS のタイマ割り込みのハンドラから呼び出されます。従って割り込みは禁止状態となっています。

チックカウントの1単位はハードウェアのシステムクロックの64分周です。

すでにアラームがセットされている OSAlarm構造体へのポインタを alarm に指定した場合、`OS_Panic()` で停止します。

アラームを停止したい場合は、`OS_CancelAlarm()` などを使用します。

## 参照

`OS_InitAlarm, OS_CreateAlarm, OS_SetAlarm, OS_CancelAlarm
OS_*SecondsToTick
`

## 履歴

2005/03/08 用語統一 [割込み] → [割り込み]
2004/12/22 アラームハンドラはタイマ割り込みのハンドラから呼び出される記述を追加
2004/08/30 セットされているアラーム構造体は使用できない記述を追加
2004/02/25 systemClock→tickに
2004/02/04 初版