Lチカしてみる

 

前回はCoIDEのプロジェクトを作っただけで、何もしないプログラムでしたので、今回はマイコンの世界ではお約束のLチカをやってみます。NucleoボードにはユーザーLEDが付いているのでそれを点灯させます。前回CubeMXで作ったプロジェクトフォルダにあるSTM32F401RE LED.iocをダブルクリックしてCubeMXを起動します。

 

 

MCUのイラストが表示されます。PA5にLD2[GREEN LED]の表示があります。ユーザーLEDはPA5(ポートAの5ピン)に繋がっているという意味です。CubeMXでNucleoをボードを選択するとボードの回路に合わせてピンを有効状態にしてくれます。

 

 

 

PA5をクリックすると、このピンに割り当て可能なペリフェラル(周辺機能)が表示されます。ペリフェラルが沢山ありますが一度に一つの機能しか割り当てられませんから、こんなにあっても勿体ない気がします。PA5はGPIO_OUTPUT(プッシュプル出力)になっています。今はピンの状態を確認しただけなのでCubeMXはそのまま終了させます。


CoIDEを起動して前回作ったプロジェクト(NucleoF401RE LED)をオープンします。main.cはSrcフォルダの中にあります。プロジェクトウインドウでmain.cをダブルクリックしてオープンします。main.cにはすでにCubeMXが生成したコードが入っています。CubeMXを使わないと最初にこれだけのコードを自分で書かなくてはなりませんから、ちょっとウンザリしますね。

 

 

main関数の下の方にWhileループがありますのでそこにプログラムを書き込みます。

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();

  while (1)
  {
   HAL_GPIO_TogglePin( GPIOA, GPIO_PIN_5 ); // この2行を追加
   HAL_Delay( 1000 );            

  }
}

Lチカプログラムはこれだけです。

 

LEDの接続されているピンはPA5です。

 

ポート指定 : GPIOA

ピン指定 : GPIO_PIN_5

 

という書き方になります。HAL_GPIO_TogglePinはポートピンの状態を反転させる(HIGH/LOW入れ替える)関数です。HAL_Delayはミリ秒で動作を停止する関数です。

 

ビルドボタンを押してコンパイルが終了してから、ダウンロードボタンでプログラムをNucleoのフラッシュに書き込みます。上手く行けばNucleoの緑LEDが1秒間隔で点滅しはじめます。