STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (7)  割り込みを使ってみよう


STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (6)  UARTを使ってみよう(2)の続きです。
シリアル通信で操作できるが、ボタンを押しても動きません。
今度は、シリアル通信で数字を入れても、ボタンを押しても動くようにしてみましょう。

そのためには、割り込みというのを使います。
割り込みとは、作業中に別の緊急案件を対応することを指します。

今回は、シリアル通信で数字を入れたら対応する。
ただ、ボタンを押しても対応するよ
というプログラムを作ります。

HAL_GPIO_EXTI_Callbackが割り込みになります。
これを今回入れたいところに記述しようと思います
が・・・うまく認識されないですね。

なので、mainの中で書いてみましょう。

すると、認識されます。
このままプログラムを作っていきましょう。

GPIO_PinにボタンであるGPIO_PIN_13を割り当てます。
そのうえで、以前書いた「もし、ボタンが認識されたらLEDが反転する」プログラムをを入れます。

最後に、このプログラムを、適切な場所である「/* USER CODE BEGIN 4 */」に移動させます。

そのうえで、これをプログラムとして動くように、頭に「void」、お知りに、「uint16_t」と入れます。
これでプログラムを関数化したことを意味します。
関数ってなんだろう??
関数は、モジュール化して、簡単に使えるようにするとわたしは思っており
void ~()
{}
これで一つのモジュールを作っています。

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == GPIO_PIN_13){
        HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
    }
}

/* USER CODE END 4 */

これで、ボタンを押したら、LEDが反転するし、シリアル通信で数字を打ってもLEDが点灯、消灯しますね。