外部入力割り込みアプリ【STM32のEXTI】
外部入力信号による割り込みアプリケーションの例です。外部割り込み特有部分の解説をします。
STM32マイコンの外部割り込みEXTIのアプリケーションです。押ボタンスイッチを割り込み入力として、出力LEDのON/OFFを切り替える応用例です。割り込み入力は敏感なので使用時にはチャタリング防止などの注意が必要です。
設定仕様:
入力:PC13 フローティング入力 押しボタンスイッチ
出力:PA5 プッシュプル出力+500Ω+LED
サンプルプログラム Exti.cでは押しボタンSW入力による割り込みが入るたびにフラグinterrupt_flag状態を切り替え、その状態に応じて出力LEDを点灯させたり、消灯させたりするプログラムです。
割り込みを使用するためのNVIC設定を行い、優先度や使用する割り込みチャネルを指定します。PC13からの入力による割り込みの場合はEXTI5_10_IRQn(EXTIライン[I5:10]割り込み)を割り込みチャネルに指定します。
割り込み入力は敏感で押しボタンSWではチャタリングが発生するので割り込み入力後の1000ms間は次の割り込みを受け付けないようにしています。プログラム無限ループのサイクルタイムをdelay_ms関数で1msとして1000msをカウントしています。
割り込みハンドル内で、発生した外部割り込みがEXTI_GetITStatus(EXTI_Line13)でピン13によるものであることの判別しています。
ポイント
外部割り込みを使用する場合はGPIOに加えて、AFIOにクロックを供給する必要があります。