3
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-05-19

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

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

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

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

62-1-1-1.jpg

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

62-1-1-2.jpg

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

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

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

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

62-1-1-4.jpg

/* 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が点灯、消灯しますね。

3
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?