検索
連載

マイコンの割り込み優先度、変更する理由とその仕組みQ&Aで学ぶマイコン講座(112)(3/4 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「割り込み優先度」についてです。

Share
Tweet
LINE
Hatena

割り込み優先度の制御

 割り込み優先度の段階の設定には、「割り込み優先度レジスタ」を使います。このレジスタの中のPRI_Nフィールド(Nは割り込み番号を表す)を設定することで、優先度を割り当てることができます。PRI_Nフィールドがフル実装の8ビットであれば、各割り込みを256段階の0〜255に割り当てることができます。ただし、STM32L4シリーズの場合は、上位4ビットのみの実装なので、16段階の0〜15になります。

<strong>図1:STM32L4の割り込み優先度レジスタ」のPRI_Nフィールド(再掲)</strong>
図1:STM32L4の割り込み優先度レジスタ」のPRI_Nフィールド(再掲)[クリックで拡大]

 PRI_Nフィールドの値で決まる割り込み優先度の「横取り優先度」と「サブ優先度」の段階数は、「アプリケーション割り込みおよびリセット制御レジスタ」のPRIGROUPフィールドで決まります。

 例えば、PRIGROUPフィールドを100(二進数)に設定します。この時、横取り優先度にPRI_NフィールドのMSB側の3ビットが割り当てられ、サブ優先度にLSB側の5ビットが割り当てられます。横取り優先度が3ビットですので2の3乗の8段階になり、サブ優先度が5ビットですので、32段階になります。8段階×32段階で合計256段階に優先度が割り当てられます。

<strong>図4:アプリケーション割り込みおよびリセット制御レジスタ</strong>
図4:アプリケーション割り込みおよびリセット制御レジスタ[クリックで拡大]

 STM32L4の場合は、割り込み用優先度レジスタのPRI_Nフィールドの8ビットのうちMSB側の4ビットしか実装されていないので、LSB側の4ビットは常に0として読み出されることになります。この場合、PRIGROUPフィールドは011〜111(二進数)が有効になり、優先度の割り当ては16段階になります。

 例えば、PRIGROUPフィールドが101(二進数)の場合、横取り優先度は4段階、サブ優先度も4段階で、合計16段階になります。

<strong>図5:STM32L4の割り込み優先度割付</strong>
図5:STM32L4の割り込み優先度割付[クリックで拡大]

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る