n番煎じのぐだぐだSTM32でHAL_DelayをつかったLチカ[自分用メモ]
どうもimahaです。
せっかく書く気が起きたのでとりあえず自分が何をしてきたのかを残す意味を込めて更新していきたいと思います。
コンスタントにこういった更新とか進捗を出し続ける人たちすごいと思う。
今回の記事も新情報みたいなものは全くないです(そもそもそんなことできない)。 間違ってたり古かったりしたら教えて頂けるとありがたいです。 よろしくお願いします。
1.この記事の意図
とりあえず自分が一回目の布教で行っているHAL_Delayを用いたLチカを題材に
cubeMXを用いたピン設定
↓
プログラムの書き加え
↓
書き込み
という最低限の一連の流れを把握する。
2.道具
今回用いるツールの説明
2.1.ソフトウェア
・Atollic TrueSTUDIO8.1.0
・STM32cubeMX
2.2.マイコンボード
・STM32nucleo32F303k8
2.3.関数
・HAL_Delay(__IO uint32_t Delay) HALにおけるDelay関数。単位はms。
・HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) GPIOピンの出力を反転する(LEDにつながってた場合、LEDがそこまでついていたら消え、消えていたら点灯する)
3.方法
というわけで具体的な方法です。
コード生成、プログラム編集、書き込みで章立てを行いながら書いていこうと思います。
3.1.コード生成
3.1.1マイコン選択
まずマイコン選択です。cubeMXを開くと以下のようながめんになるので青矢印で示されたnew projectをクリックします。
すると以下の写真のような画面になります。
この画面は評価ボードではなくマイコンチップ単体として選ぶ用の画面です。
今回は評価ボードに乗っかったマイコンを用いるので青矢印で示されたあたりにあるboard selectorをクリックします。
そうするとボード選択画面に移動します。
今回用いるのはnucleo32F303k8なので、青矢印で示された箇所をnucleo32、オレンジ矢印で示された箇所をF3にします。
これにより赤い四角で囲まれた範囲に表示されていたマイコンボードの一覧が条件に従って絞られるので、今自分が用いようとしているマイコンボードであるか確認しつつ、マイコンの名前をダブルクリックしましょう。
これにてマイコンの選択は完了です。
3.1.2ピン設定
今回用いるマイコンボードではユーザーLEDはPB3に接続されているのでPB3をGPIO Outputに設定したい。
ここまでの操作で以下のような画面になっていると思います。
ここで、まず青矢印で示されたPB3のピンをクリックします。
すると以下のような選択画面が出てくるので、最初に言った通り目標とするGPIO Outputをクリック。
すると以下のようにPB3のピンが緑色になります(緑色のピンは設定済みという意味)。
これにてピン設定は完了。
3.1.3.ジェネレート
最後に画面左上のギアみたいなマークをクリックします。
すると、以下のウィンドウにが表示されるので、青矢印の箇所にproject nameを入力、まだプロジェクトの保存先を設定していない場合保存先を作りオレンジの矢印でしめした箇所で保存先のフォルダーを設定、最後に赤の矢印で示した箇所を自分が用いるIDE(今回はTrueSTUDIO)にしてOKをクリックする。
最後にしたのウィンドウが出るのでopen projectをクリックするとIDEが起動します。
3.2.プログラムの編集
3.2.1.プログラムの書き加え
もしここまでの作業で起動したIDEがプロジェクトを表示していなかった場合、下の画像にのオレンジ矢印が示した復元アイコンをクリックしてください。
これでだめだったらファイルからopen project from fileシステムから開いてください(ちょっと疲れたので今回は割愛)
さて、これにて以下のような画面になったと思うのでまずproject名をクリックし、出てきたツリーの中のsrcをクリック。
ここでmain.cをクリックすると下のようにmain.cが開かれると思います。
そして表示されたmain.cをスクロールしていくとメイン関数があり、メイン関数の中の無限ループにたどり着くと思います。
そうすると無限ループのあたりに
/ USER CODE BEGIN WHILE /
/ USER CODE END WHILE /
というコメントアウトがあります。
実はcubeMXのピン設定は.iocという拡張子のファイルに保存されており、.iocファイルを開くとcubeMXが起動されてピン設定やペリフェラル設定を再設定することができます。
その際にこのUSER CODE BEGINほにゃららとUSER CODE ENDほにゃららというコメントアウトの外にコードを書き加えると消えます。 なので、コードはこういったコメントアウトの間に書くようにしましょう。
最後に
/ USER CODE BEGIN WHILE /
/ USER CODE END WHILE /
の間に以下の文を挿入する
これにてコーディングは終了。
3.3.書き込み
まずビルドが通るか確認しましょう。
下の画面のトンカチマークをクリックするとビルドされます
ビルドが通ったらカナブンみたいなアイコンをクリックしましょう。
そうするとデバッガが起動します。
デバッガが起動できると下のようなアイコンが表示されるようになるので、この中の再生マークを押すとプログラムが再生されます。
ボードを抜くときは赤い四角のマークを押してください。
4.まとめ
というわけで無限ループとHAL_Delayを用いたLチカを題材に、cubeMXのコード生成、プログラムの編集、書き込みの一連の流れをさらった。
おわり。