# OS_SetPeriodicVAlarm

## 構文

      #include <nitro/os.h>

      void OS_SetPeriodicVAlarm(
                      OSVAlarm*        alarm,
                      s16              count,
                      s16              delay,
                      OSVAlarmHandler  handler,
                      void*            arg );

## 引数

alarm | Vカウントアラームを設定するVカウントアラーム構造体へのポインタ
count | 毎フレームVカウントアラームが発動する(ハンドラを呼び出す)Vカウント
delay | 遅延を許可するVカウント数
handler | Vカウントアラームハンドラ
arg | Vカウントアラームハンドラが呼ばれる際の引数

## 返り値

なし。

## 説明

周期的なVカウントアラームを設定します。

すべてのフレームでＶカウントが count になったときに handler が呼び出されます。handler は、

`typedef void (*OSVAlarmHandler)( void* );`

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

他のVカウントアラームが動作しているなどの理由で指定のVカウントちょうどに呼べない時に、どのぐらいの遅延を許可するかをdelayで指定します。例えば`count=100`, `delay=5` であれば、Vカウント=100でハンドラを呼ぶことが出来なくてもVカウント=105までに呼ぶことが可能なら呼び出します。0 を指定すると指定の Vカウントでしか呼び出されません。 OS_VALARM_DELAY_MAX ならば指定のVカウント以降、呼び出し可能になった時点で必ず呼び出されます。詳細は `VAlarm の概要` の説明を参照して下さい。

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

Vカウントアラームを停止したい場合は、`OS_CancelVAlarm()` や `OS_CancelVAlalrms()` などを使用します。

## 参照

`OS_InitVAlarm, OS_CreateVAlarm, OS_SetVAlarm,
OS_CancelVAlarm, OS_CancelVAlarms
`

## 履歴

2005/03/08 用語統一 [割込み] → [割り込み]
2004/08/30 セットされているVアラーム構造体は使用できない記述を追加
2004/07/06 delay についての記述を追加
2004/02/24 初版