STM32資料 基礎編 1
LEDをつけてみよう
LEDをつけて、STMの開発の流れを覚えていこう!
今回やること
今回は3つのステップに沿ってLEDをつけてみる
通信などをするときも同じステップを踏むので慣れておこう!
作業の流れ
- LEDにピンを割り当てる
- wrapper.cppにコードを書き込む
- STM32にプログラムを書き込み実行する
- LEDがつくことを確かめる
ピンの割り当て
STM32では、1つのピンに通信やLEDなどの機能を割り当てることができる
そのため、どの用途でどのピンを使うかを設定しなくてはならない
(プロジェクト名).iocをクリックすると画像のような画面が出てくるのでここで設定しよう
PA5にGPIO_Output(電圧を変えることができる機能)が割り当てられていることを確認しておこう

プログラム
LEDをつけるための関数
今回はLEDに与える電圧を設定することで、LEDをつけている
そこで、電圧を変更する関数について説明する
関数
HAL_GPIO_WritePin(GPIOx,GPIO_PIN_y, GPIO_PIN_SET);
この関数の引数
GPIOxやGPIO_PIN_yは整数型だけど、システム側で文字に対応するようになってるので
GPIOAなどと書くことができる
引数名 | 変数型 | 内容 |
---|---|---|
GPIOx | uint32_t | GPIOの種類(xはGPIOの種類) |
GPIO_PIN_y | uint32_t | ピンの種類(yはピン番号) |
GPIO_PIN_SET | GPIO_PinState | SET: 3.3v RESET: 0.0v |
細かいお話
- ピンの状態を反転する関数
LEDが付いている時消す、消えている時につけるという動作を実行したいときは、この関数を使ってみよう
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
反転する関数なので、電圧を決める引数がないこと以外は、上の関数と同じ
待機する関数
タイミングを調整するために、一定時間待機する関数を使う
関数
HAL_Delay(Time);
この関数の引数
引数名 | 変数型 | 内容 |
---|---|---|
Time | uint32_t | 待機時間(単位はミリ秒) |
サンプルコード
実際にLEDを点灯させるコードを載せた
実際に実行してみたり、Delayの時間を変えたりしてみよう
#include "wrapper.hpp"
#include "gpio.h"
//起動時に一度だけ実行される
void init(){
//LEDをつける
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
//1000ms(1s)待機
HAL_Delay(1000);
}
//繰り返し実行される
void loop(){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(500);
}
終わりに
今回はLEDをつけて、開発の流れを体験してもらいました!
次回は、2本の通信線を使ったシリアル通信について説明します!