STM32F303K8 GPIO 外部イベント割り込み
開発環境
評価ボード | Nucleo STM32F303K8 |
IDE | System Workbench for STM32 (SW4STM32) |
Library | Hal Library |
OS | windows 10 pro |
外部割り込みを設定します。
CubeMXの設定
先程Inputに設定したPA8を今度はGPIO_EXIT8に設定します。
GPIO設定
次にConfiguration→GPIOから
GPIO Mode: External Interrupt Mode with Falling edge trigger detection
に設定します。これでピンがローに落ちたときに割り込みが発生します。
NVIC設定
次にConfiguration→NVICから
EXTI line[9:5] interruptsのEnableにチェックを入れます。これで割り込み用の関数が生成されます。(一応Code geneartionタブでEXTI line[9:5] interruptsのGenerate IRQ handlerにチェックが入っていることを確認します。)
SW4STM32の設定
main.cのUSER CODE 3の中身は消しておきます。
stm32f3xx_it.cの
void EXTI9_5_IRQHandler(void) { /* USER CODE BEGIN EXTI9_5_IRQn 0 */ /* USER CODE END EXTI9_5_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8); /* USER CODE BEGIN EXTI9_5_IRQn 1 */ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin); /* USER CODE END EXTI9_5_IRQn 1 */ }
とします。
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
この関数でPA8の外部イベント割り込みが登録されます。
これでボタンがLOWに落ちるとLD3がトグルします。
デバッグ画面
78にブレークポイントをおいて、ボタンを押したら78に飛んできたら成功です。
ただ、今はチャタリング防止のプログラムを入れてないので、反応があまりよろしくないと思います。
20170821の記事