ARMマイコンを使った電子工作をしたくなったので、大分昔に買ったSTM32ディスカバリの本と基板を引っ張り出して、2020年に手軽に手に入る環境で動かしてみたので、その記録をまとめました。当時買ったのが以下の本とマイコンです。
登録簡単なTrueStudioとST-LINK utilityを自分のパソコンにインストールしました。
・True Studio
https://www.st.com/ja/development-tools/truestudio.html
・STM32 ST-LINK utility
https://www.st.com/ja/development-tools/stsw-link004.html
TrueStudioに関しては、後継となる開発環境も出ているようなのですが、STM32 value line Discoveryのプロジェクトを作った時に、この基板にデフォルトで入っているUSER BUTTONを押したときにLEDの点滅方法が変わるというプログラムのもととなるコードが最初からmain.c内に入っていたので、こちらを選びました。
また、ST-LINKはバージョンがあり、STM32 value line Discoveryはもっとも初期のバージョンで、後継ソフト(ST-LINK/V2以降のみ対応)では対応していないというのがわかったのも、TrueStudioを選んだ理由です。
⇒この点に関して、TrueStudioでビルドしてマイコンに最初に書き込む際、メッセージがでたのでマイコンに搭載されているST-LINKのファームウェアウェアをアップデートしたのですが、なぜか書き込みができないことが判明(このアップデートがよくなかったのか)したので、結局、マイコンへのプログラムの書き込みはST-LINK Utilityを利用しました。
①メニューのファイル→C Projectを選択し、次に立ち上がった画面で適当なプロジェクト名を設定し、Embedded C Projectを選択します。
②次にターゲットマイコンの選択画面になるので、STM32VL_Discoveryを選択します。
これであとは特に設定の変更はせず、次へボタンを押していって、最後に終了ボタンを押すと、プロジェクトが作成されます。
③main.cのmain関数に無限ループする以下のwhile文があります。
それを以下のように書き換えました。
{
i++;
#ifdef USE_LED
STM_EVAL_LEDToggle(LED1);
#elif defined USE_STM32_DISCOVERY
if(0 == STM32vldiscovery_PBGetState(BUTTON_USER))
{
//LED4の点灯
STM32vldiscovery_LEDToggle(LED4);
}
else
{
//LED4の消灯
STM32vldiscovery_LEDOff(LED4);
}
#endif
}
これで、USER BUTTONを押してないときはLED4は点灯、押しているときは消灯します。
④*1を参照してプロジェクト設定でビルド時にhexファイルが出力されるようにして、*2を参照してST-LINK Utilityを使ってプログラムの書き込みを実行しました。
結果は以下の通り、青色のLED(LED4)が、USER BUTTONを押していない状態で点灯するようになりました(写真の赤丸している部分がLED4)。
USER BUTTONを押すと、LED4は消灯します。
<参照>
*1 hexファイルの出力の設定は以下のページを参照しました。
gsmcustomeffects.hatenablog.com
*2 STM32 value line DiscoveryはST-LINKの基盤が搭載されているので、USBケーブルで基板をつなげれば専用のデバッガ/プログラマは不要なのですが、hexタイプのファイルをST-LINK utilityを使て書き込まないといけないので、以下のページを参照しました。
ランキングに参加してます。
よかったらクリックをお願いします。