今回は最近話題になっている PlatformIO を試してみました。
PC:Windows10 OS
Board: STM32Nucleo-F401RE
IDE: STM32CubeIDE Version1.3.0
Configurator: STM32CubeMX Version5.6.0
Visual Studio Code Version 1.47.2
PlatformIO IDE Version 1.10.0
anaconda3
概要
少し前に PlatformIO なるものの存在を知りました。
STM32CubeIDEは便利ですが、エディタの機能が貧弱と思われている方が少なくはないと思います。
PlatformIO は VS Code の拡張からインストールし、IDEとして使うことができます。
ホストは Windows, Linux, MAC の全てに使えて、さまざまなプラットフォームに対応してます。
また対応しているボードも豊富に揃っています。
PlatformIO についてご存じない方は こちら を参照してみてください。
環境構築には少々手間がかかりますが、実際に動かしてみて使えそうか判断してみてはいかがでしょうか。
コーディングする方々にとってツール類の中ではエディタを使う時間が長く充実すべきところだと思うからです。
私も触ってみて PlatformIO を体感してみようと思います。
インストール
こちらでは以下のバージョンで動作確認ができたので、できるだけ同じ環境で確認されることをお奨めします。
(1)STM32の統合開発環境
STM32CubeIDE Version1.3.0
(2)STM32のコンフィグレーター
STM32CubeMX Version5.6.0
これまで 5.5.0 を使っていたのですが、なぜか怒られたので 5.6.0 にバージョンアップしました。
初期化コードを生成してくれる STM32CubeMX ですが、インストールするフォルダの設定がデフォルトでは問題が発生します。
デフォルトで指定されるフォルダ (注)こちらの設定ではうまくいかない
C:\Program Files(x86)\STMicroelectronics\STM32Cube\STM32CubeMX
手直しするフォルダ (x86)でない方の Program Files下にインストールする
C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX
以下のフォルダ設定画面で手を入れる必要があります。
(3)Visual Studio Code Version1.47.2 (Visual Studio Code は以降 VSCode と呼ぶこともあります)
(4)PlatformIO IDE Version1.10.0
PlatformIOは Visual Studio Code の Extensionsからインストールすることができます。
Visual Studio Code をインストールしたら起動後、 View – Extensions を選択します。
カーソルが出ている枠内に platformio を入力し、候補の中から PlatformIO IDE の Installボタンを押します。
下の OUTPUTウィンドウに
Installing platformIO Core…
Please do not close this window and do not open other folders until this process is completed.
と出てくるのでしばらく待ちます。
Please restart VSCode.と出たら VSCodeを再起動します。
再起動後、VSCodeを終了します。
(5)anaconda3
anaconda3は最近人気の言語、Pythonの拡張版です。標準のPythonにライブラリを同梱したものになります。
PlatformIOのインストールなどで必要になるようです。
Python3.7 の方をインストールします。
Pythonは組み込みにも使われ始めている言語ですね。
環境構築
まずSTM32CubeIDEでプロジェクトファイルを作成します。
そしてPlatformIOの変換ツールを使って、PlatformIO IDEで読み込めるようにします。
STM32CubeIDEを起動します。
IDEを起動し、File- New – STM32 Project を選択し、Target Selection ウィンドウが出たら Board Selector タブを選択し Boards List から NUCLEO-F401RE を選択し Next ボタンを押します。
Project 名に F401PlatformIO と入力し、Finishボタンを押します。
Initialize all peripherals with their default Mode ? と聞いてくるので Yesを押します。
This kind of project is associated with the STM32CubeMx perspective. Do you want to open this perspective now ? と聞いてくるので Yesを押します。
ビルドしてエラーがないことを確認して、IDEを終了します。
このプロジェクトファイルがどこにあるのか、パスを確認しておいてください。
こちらの環境では「C:\STM32\STM32CubeIDE\workspace_1.3.0\F401platformIO」となっています。
続いて anaconda3 を起動します。
スタートメニューに anaconda と入力し検索結果から出てきた anaconda Prompt (anaconda3)を選択します。
続いて変換用ツールの stm32pio をインストールします。
コマンドを入力する画面が出てくるので以下のコマンドを入力します。
pip install stm32pio
stm32pio は platformIO を呼び出すので、環境変数にそのパスを設定しておきます。
C:\Users\(ユーザー名)\.platformio\penv\Scripts を環境変数PATHに追加します。
管理者権限がないと、うまくいかないことがあるようなので説明しておきます。
スタートボタンを右クリックします。
メニューが出てくるので「Windows Power Shell(管理者)」を選択します。
Power Shell が起動したら次のコマンドを入力して実行します。
Start C:\Windows\system32\rundll32.exe sysdm.cpl, EditEnvironmentVariables
下のシステム環境変数のPathを選択し、編集ボタンを押します。
新規ボタンを押して追加するパスを入力しOKボタンを押します。
追加するパス:
C:\Users\(ユーザー名)\.platformio\penv\Scripts を入力し OKボタンを押します。
(ユーザー名)の部分は、そちらの環境のユーザー名になります。
設定後は、PCを再起動します。
anacondaを再度立ち上げて、以下のコマンドを入力します。
stm32pio new -d c:\stm32\stm32CubeIDE\workspace_1.3.0\F401platformIO\ -b nucleo_f401re –start-editor=code –with-build
(注)うまくコピペできないようです、エラーが出る場合 start と with の直前にはハイフンが2つあることを確認してみてください。
(注)- -start と – -with です。
c:\stm32\stm32CubeIDE\workspace_1.3.0\F401platformIO\ の部分はSTM32CubeIDEで作成したプロジェクトのフォルダです。
javaに関する小窓が出ますが、そのまま OKボタンを押します。
以下のように進行していき、成功すると VSCode と PlatformIO が自動的に立ち上がります。
VSCode が起動した様子です。
宇宙人きたぁ~
コーディングしてみる
左側の V Src 下の main.c をダブルクリックして開き、while()ループ内に以下のコードを書いてみましょう。
Lチカのコードですね。
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
エディタの上の main.c の右側に〇がついています。Ctrlキー+sキーを押すと、ファイルが保存されて〇から×にかわります。
デバッグしてみる
PCとボードをUSBケーブルでつないでおきます。
Run – Stard Debugging (F5) を選択します。
デバッグ用のツールメニューが出てきました。
左から
Continue (F5)
Step Over(F10)
Step Into(F11)
Step Out(Shift+F11)
ReStart (Ctrl+Shift+F5)
Stop (Shift+F5)
となっています。
F10キーでステップ実行することが確認できました。
行番号の左側をクリックするとブレークポインを貼ることができます。
F5キーを押すとプログラムが走ります。
おぉ、Lチカが確認できた!!!
皆さまの環境でも、うまく動きましたでしょうか?
実用できるのか? VS Code に慣れている方には、ぜひ試してみて頂きたいですね。
少々長くなってしまいました。
お疲れさまでした。
コメントを書く