割り込み優先度の段階の設定には、「割り込み優先度レジスタ」を使います。このレジスタの中のPRI_Nフィールド(Nは割り込み番号を表す)を設定することで、優先度を割り当てることができます。PRI_Nフィールドがフル実装の8ビットであれば、各割り込みを256段階の0〜255に割り当てることができます。ただし、STM32L4シリーズの場合は、上位4ビットのみの実装なので、16段階の0〜15になります。
PRI_Nフィールドの値で決まる割り込み優先度の「横取り優先度」と「サブ優先度」の段階数は、「アプリケーション割り込みおよびリセット制御レジスタ」のPRIGROUPフィールドで決まります。
例えば、PRIGROUPフィールドを100(二進数)に設定します。この時、横取り優先度にPRI_NフィールドのMSB側の3ビットが割り当てられ、サブ優先度にLSB側の5ビットが割り当てられます。横取り優先度が3ビットですので2の3乗の8段階になり、サブ優先度が5ビットですので、32段階になります。8段階×32段階で合計256段階に優先度が割り当てられます。
STM32L4の場合は、割り込み用優先度レジスタのPRI_Nフィールドの8ビットのうちMSB側の4ビットしか実装されていないので、LSB側の4ビットは常に0として読み出されることになります。この場合、PRIGROUPフィールドは011〜111(二進数)が有効になり、優先度の割り当ては16段階になります。
例えば、PRIGROUPフィールドが101(二進数)の場合、横取り優先度は4段階、サブ優先度も4段階で、合計16段階になります。
Copyright © ITmedia, Inc. All Rights Reserved.