開発のヒント
その他
レベル割込みの実現方法
STM32シリーズでは、外部割込みの「レベル割込み」はサポートしていません。 しかし、「エッジ割込み」と「端子のレベルチェック」により、「レベル割込み」相当の機能を実現することが出来ます。 例えば、Lowレベル割込みを実現したい場合は、まず立下りエッジで割込みを受けて、割込みサービスルーチンへ飛びます。
このサービスルーチンの最後(メインルーチンに戻る直前)に端子のレベルをチェックします。もしLowレベルが維持されている場合は、割込みペンディングビットを立てます。もし、レベルがHighであれば、ペンディングビットを立てずに、メインルーチンへ戻ります。
ペンディングビットが立っているということは、割込みを受け付けたと同じことですので、再び割込みサービスルーチンを実行します。この方法を使うと、外部割込み端子がLowを維持し続ける限り、割込みサービスルーチンが繰り返され、「レベル割込み」と同じ動作になります。
Highレベル割込みの場合は、この逆、すなわち「立ち上がりエッジ割込み」と「Highレベルチェック」で実現できます。 ただし、レベルをチェックした直後、メインルーチンに戻る前に、端子のレベルが変化した場合は、コードの実行のタイムラグにより若干タイミングがずれますので、ご注意ください。
過去の開発のヒントはこちら