https://silver.arm.com/browse/BX008

開発のヒント

その他

レベル割込みの実現方法

STM32シリーズでは、外部割込みの「レベル割込み」はサポートしていません。 しかし、「エッジ割込み」と「端子のレベルチェック」により、「レベル割込み」相当の機能を実現することが出来ます。 例えば、Lowレベル割込みを実現したい場合は、まず立下りエッジで割込みを受けて、割込みサービスルーチンへ飛びます。

このサービスルーチンの最後(メインルーチンに戻る直前)に端子のレベルをチェックします。もしLowレベルが維持されている場合は、割込みペンディングビットを立てます。もし、レベルがHighであれば、ペンディングビットを立てずに、メインルーチンへ戻ります。

ペンディングビットが立っているということは、割込みを受け付けたと同じことですので、再び割込みサービスルーチンを実行します。この方法を使うと、外部割込み端子がLowを維持し続ける限り、割込みサービスルーチンが繰り返され、「レベル割込み」と同じ動作になります。

Highレベル割込みの場合は、この逆、すなわち「立ち上がりエッジ割込み」と「Highレベルチェック」で実現できます。 ただし、レベルをチェックした直後、メインルーチンに戻る前に、端子のレベルが変化した場合は、コードの実行のタイムラグにより若干タイミングがずれますので、ご注意ください。

https://silver.arm.com/browse/BX008

過去の開発のヒントはこちら