割り込み要求(IRQ)
割り込み要求(IRQ)は、周辺機器(例: センサー、タイマー)によってトリガーされるハードウェア信号です。この信号はただちに CPU の注意を引きつけ、現在の処理を一時停止させて、割り込みサービスルーチン(ISR)と呼ばれる専用のルーチンを通じてそのイベントを処理できるようにします。ISR の完了後、CPU は以前のコンテキストを復元し、元のタスクを再開します。
IRQ がなければ、CPU は各周辺機器で何かが起きたかどうかを継続的に確認(ポーリング)し続ける必要があります。これは時間とエネルギーを浪費し、特にほとんどの時間で何も変化していない場合には非効率です。
なぜポーリングではなく IRQ を使うのですか?
次のたとえを考えてみてください。あなたは大好きなビデオゲームをプレイしていて、全集中してラスボスを倒そうとしています。同時に、友人が訪ねてくる予定です。
ポーリング: 数秒おきにゲームを止めてドアを確認し続けます。これは気が散り、非効率で、ゲームプレイを台無しにします。
IRQ(ドアベル): ドアベルを設置します。友人が到着したら、それを押します。あなたはベルの音を聞き、すばやくゲームを一時停止してドアを開け、その後、ちょうど中断した場所からゲームに戻ります。
このセクションでは、独自の ISR を定義するための詳細や関連するすべての手順には踏み込みません。それには専用の章が必要です。ここでは、HAL が提供する割り込みマクロとハンドラーサポートについて、まずは軽く導入するだけにします。