前回は、STM32CubeIDEをインストールしてプロジェクトを作ってみたところで終わってしまいました。今回は、恒例の「Lチカ」をビルドして走らせようと思うのですが、初めての環境、手探り状態です。そんな簡単な事でも、やはり初回はノーエラーとは行きません。またまたダウンロードが走り出します。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
さて今回は、途中経過画面をふんだんに盛り込んで(字は少なく)行きたいと思います。まずは新にプロジェクトを作るところから
お決まりのFile>NewからSTM32 Projectを選択します。もともとEclipseのCDTなので「普通の」C/C++プロジェクトも作れるのでしょうが、無視します。すると、昨日でてきたカッコいいターゲットデバイス、ボードの選択画面が出てきます。今日もネットワーク介してチェックはしたようですが、昨日のように時間はかかりません。ここで、ターゲットをNucleo-F401REにセットすると、今度はプロジェクトの名前やら何やら普通のEclipseでも聞かれるようなことを聞かれます。
ついここで、Finishを押してしまいそうになりますが、我慢して、Nextを押します。まだまだ設定することがあるようです。
いろいろ自動でコードを作ってもらうためには必須だと思うので焦らずに設定していきます。
今度は、ファームウエアライブラリの設定画面が出てきました。昨日、時間をかけてダウンロードし、展開していたあれです。
昨日のバージョンが表示されているので、これでOKということにします(今日はダウンロードはおこらないでしょう。)これでNextボタンが消えて、Finishボタンを晴れて押します。
マイコンのピン配画面が登場しました。ピン止めされているピンには既に機能がアサインされているようです。
当然、何か機能を追加すればここに反映されるのでしょう。流石です、下辺の端子PA5には、
LD2[Green Led]
とNucleoボードの回路の設定が反映されています。これを光らせれば良いのだね。上の図を見ると Pinout View以外に System Viewというのも見えるので覗いてみます。
現在、自動的に設定されているファームウエアの類が一覧になって出てくるようです。USART2というのは、Nucleoボードでは、デバッグI/FのUSBのUSB-Serialにつながっている通信ポート。GPIOにはビックリマークが出ているので、中をのぞいてみるとこんな感じ。
とりあえず、「おまかせ」(デフォルト設定)でお願いしたら、ちゃんと設定されているみたいです。自分で何か回路を接続するときは、ここで設定してコードを再生成することになるのでしょう。しかし、最低限の設定でコードジェネレーションしたのですが、生成されているファイルはかなり多いです。これを端から読むのはつらい。当然、という感じでmain.cも生成されていて、ユーザーコードを書き込む場所はこんな感じ。
MX_GPIO_Init()関数などは、main()の下に生成されたコードがあるので中身を読むことができます。なにやら
HAL
ハードウエア抽象化レイヤの関数群を呼び出して初期化しています。
ということは、ご所望のLチカも、HALレイヤの「何とか関数」を呼び出せばよいのでしょう。欲しいのは以下です。
-
- ピンをトグルさせる機能
- ちょい待ち機能(人間の目に分かる時間)
「何とか」を調べるのに大量にあるヘッダの定義を調べなければならんのか?と呆然としていたら、ちょうどよい手引きがありました。
YouTubeでSTM32CubeIDEで検索
すればチュートリアルの動画出てきます。そこでまさにLチカやろうとしているのです。真似っ子するのが一番。それに、大事なことが書いてあります。
入力の補完機能はコントロール+スペース
HALの関数の引数などが分からなくても、とりあえずこいつで入力できます。そして、ハードウエア固有の定義などはmain.hヘッダにまとまっているのでそれを見ればよいと。
たったの2行ですがね、これだけ書けたら、後は以下同文で書けそうな気になってくるから不思議です。
コードが書けたので早速ビルドしてみます。
ビルド成功。エラーもでていないし、このオブジェクトをボードに書き込んで走らせるぞ。
ボードに書き込んで起動するのには デバッガを呼びます。デバッグビルドが作られて、ボードに転送される筈。
やっぱりというか、何というか、そうは問屋がおろさない。IDE自体は英語なのですが、このエラーメッセージはなぜか日本語で助かります。どうもNUCLEOボード上のデバッグインタフェースのファームウエアが古いと怒っているみたい。
手順に従います。いくつかウインドウが開くのですが、最終的には以下のようなダウンロード用のウインドウが開きます。結局、今日もダウンロード。まあ、最初だからショウガナイ。Open in update modeを押すと、Firmware versionに値が入り、Upgradeボタンがアクティブになるので、これを押すと。
ボードのファームウエア書き込み成功。ようやく、debugボタン(Eclipse伝統の虫のアイコン)に再トライ。
大したことは何もしていないのですが、大きな障害?を乗り越えた達成感があるのは何故でしょう。
後は、実行ボタンを押せば走る(LED光る)し、途中で止めることも、ブレークポイントで止めて、変数の値を読むことも普通にできました。こんな感じ。
やはり、最初はいろいろあるのね。