# OS_WaitInterrupt

## 構文

  `#include <nitro/os.h>`
  `void OS_WaitInterrupt( BOOL clear, OSIrqMask irqFlags );`

## 引数

clear | チェックフラグをクリアするかどうか
irqFlags | 発生を待つ割り込みのマスク値。論理和で複数を指定可能

## 返り値

なし。

## 説明

指定のIRQ割り込み要因の発生を待ちます。

irqFlags には複数の割り込み要因をマスク値の論理和で指定することが出来ます。この中のいずれかの割り込みが発生したときに関数から戻ります。割り込みの種類は以下を参照してください。

→ 割り込みの種類

> `(例) VBLANK と TIMER0 のどちらかを待ちます。`
> `OS_WaitInterrupt( TRUE, OS_IE_V_BLANK | OS_IE_TIMER0 );`

割り込みが発生したかどうかは、割り込みチェックフラグがセットされているかどうかを見て判断しています。このフラグは割り込みハンドラの中でユーザが明示的に`OS_SetIrqCheckFlag()` を呼んでセットする必要があります。

clear を TRUE にすると、割り込み発生待ちのを行う前に、irqFlags で指定された割り込みチェックフラグをリセットします。FALSE ならリセットしません。リセットしない場合は、この関数に入った時点で待ちを行いたいチェックフラグがセットされているとすぐに関数から戻ることになります。

###
`OS_WaitInterrupt()` と `OS_WaitIrq()` の違い

`OS_WaitInterrupt()` と `OS_WaitIrq()` との違いは、`OS_WaitInterrupt()` は割り込み要因を待つ間、`OS_Halt()` で停止しますが、`OS_WaitIrq()` は割り込み要因を待つ間は他のスレッドに処理を移し、割り込みが発生した後に動作を再開するというものです。スレッドを使用しない場合は、両者は同じ動作をする関数となります。

## 参照

`OS_SetIrqCheckFlag, OS_WaitIrq
`

## 履歴

2005/03/08 用語統一 [割込み] → [割り込み]
2004/05/24 初版