CCWO

挫けそうになるブログ

STM32F303K8 GPIO 外部イベント割り込み

開発環境

評価ボード Nucleo STM32F303K8
IDE System Workbench for STM32 (SW4STM32)
Library Hal Library
OS windows 10 pro

外部割り込みを設定します。

CubeMXの設定

f:id:CCWO:20170821130108p:plain
先程Inputに設定したPA8を今度はGPIO_EXIT8に設定します。

GPIO設定

次にConfiguration→GPIOから
f:id:CCWO:20170821130208p:plain
GPIO Mode: External Interrupt Mode with Falling edge trigger detection
に設定します。これでピンがローに落ちたときに割り込みが発生します。

NVIC設定

次にConfiguration→NVICから
f:id:CCWO:20170821130344p:plain
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がトグルします。
デバッグ画面
f:id:CCWO:20170821134447p:plain
78にブレークポイントをおいて、ボタンを押したら78に飛んできたら成功です。
ただ、今はチャタリング防止のプログラムを入れてないので、反応があまりよろしくないと思います。