次の方法で共有


GPIO 割り込みマスク

割り込み入力として構成されている汎用 I/O (GPIO) ピンは、有効化および無効化だけではなく、マスク化またはマスク解除化することができます。

周辺機器からレベルによってトリガーされる割り込みが有効でアクティブであるのに、カーネル トラップ ハンドラーがデバイスの割り込みサービス ルーチン (ISR) をすぐに実行して割り込みをクリアにできない場合、ハンドラーは GPIO ピンで割り込みをマスクして、ピンが繰り返し割り込みを引き起こすことを防ぎます。 その後、ISR が実行され、割り込みがクリアになると、割り込みを安全にマスク解除することができます。

割り込みをマスク化しても、割り込みはクリアまたは無効になりません。 GPIO 割り込みが有効、アクティブ、マスク化されている場合、この割り込みのマスクを解除すると、GPIO コントローラー デバイスは割り込み要求をプロセッサに通知します。

GPIO 割り込みが無効になっている間、GPIO 割り込みマスク ビットは作動しません。 CLIENT_EnableInterrupt コールバック関数は、割り込みのマスク ビットをゼロに設定します。つまり、割り込みは有効になってから初めてマスク解除されます。

GPIO 割り込みピンのマスク化と無効化の重要な相違点は、マスク化ではピンの割り込み構成設定が保持されるのに対し、ピンの無効化ではこれが保持されないことです。 GPIO 割り込みピンはマスク化されますが、以前にプログラムされた割り込みモード (エッジ トリガーまたはレベル トリガー)、極性 (アクティブ ハイ、アクティブ ロー、または両方アクティブ)、デバウンス設定が保持されます。 これらの設定は、割り込みがマスク解除されるとすぐに再び有効になります。 ただし、割り込みを無効にすると、ピンのすべての割り込み構成設定が失われます。 ピンを有効にしてから、必要な割り込み構成設定で再び設定することが必要です。

一部の GPIO コントローラーは、割り込み有効レジスタとは別の割り込みマスク レジスタをハードウェアで実装します。

ただし、他の GPIO コントローラーでは、割り込みマスク化機能と割り込み有効化機能を組み合わせたハードウェア レジスタのセットが 1 つ用意されています。 これらのコントローラーのドライバーは、ソフトウェアで個別の割り込みマスク化レジスタと割り込み有効化レジスタをエミュレートします。 このため、これらのドライバーは、割り込み可能ビットと割り込みマスク ビットの論理状態を追跡し、ハードウェア レジスタ内の対応するビットを操作して、各 GPIO 割り込みの論理割り込み有効化ビットと割り込みマスク ビットの動作を正確に反映します。