概要
STM32 Nucleo Boardには、はじめから内蔵のLEDを点滅させるサンプルプログラムが入っています。このボードには、ユーザーが利用できるLEDとプッシュボタンがついていますので、この最初から入っているサンプルプログラムを少しだけ改造して、ユーザープッシュボタンを押したときだけLEDの点滅が速くなるプログラムに変更してみました。
前提知識
STM32F103RB, Nucleo, Keil Studioなどの開発環境の整備には以下の記事を参考にしてください。
回路
今回の実験はNucleo STM32 Boardに標準でついているものだけを使うので、回路や配線などの準備は不要です。Keil Studioが使えるパソコンとNucleo STM32 BoardをUSBケーブルで接続しているだけでOKです。
サンプルソース
最初から基盤に入っていたソースをいじるだけなのでターゲットOSは「mbed OS 5」だと思います。mbed OS 5では、ユーザーが利用できる青いプッシュボタンはPC_13ピンを「USER_BUTTON」という定義#defineでしています。ちなみにmbed OS 6では、このPC_13に定義されている名前が「BUTTON1」に変更されていますので、コンパイルエラーが出る場合などはOSの番号を確認してみてください。
メモ:ユーザーボタン
17行目:変数btn1にユーザーボタンを定義します。
21行目:この変数は、ボタンが押されている間は「0」になり、ボタンがはなされると「1」になりますので、if文でこれを判断して、ループの待機時間を変化させます。
メモ:LED1
16行目:変数led1にユーザーが利用できるLED1を定義します。
20行目:変数led1を「0なら1に」と「1なら0に」反転させ点灯と消灯をさせる部分です。