はじめに
STM32マイコンのプログラムはSTM32CubeIDEなどを使って書くことができますが、ただのLチカをしたいだけなのにコードが200行とかになってしまいます。STM32マイコンもあのArduinoのように書きたいですよね。この記事ではVScodeのPlatformIOを使ってArduinoフレームワークでNucleoのLチカをしてみたいと思います。
今回はNucleoボードを使いましたが、チップから実装したものなどでも同じようにできると思います。
環境
Windows 11 (VScodeが使えれば大丈夫だと思います)
STM32 Nucleo Board STM32F446RE (他のものでも使えると思います)
PlatformIOの準備
PlatformIOがすでに入っている人は飛ばしていただいて結構です。
PlatformIOは、マイコンの開発のためのVScodeの拡張機能です。これさえあればどんなマイコンの開発にも困らないとういうほど強力なツールです。
導入方法は簡単で、VScodeの拡張機能の検索窓に「PlatformIO」と入力して一番上に出てきたものをインストールするだけです。
プロジェクトの作成
PlatformIOをインストールすると、左側にPlatformIOのアイコンが表示されるようになると思います。
そのアイコンをクリックして、QUICK ACCESS > PIO Home > Open
をクリックするとPlatformIOのホーム画面が開きます。
中央の「New Project」というボタンをクリックすると、次のようなプロジェクト作成の画面が表示されます。
「Name」にプロジェクト名を入力し、「Board」は自分が使うNucleoボード、「Framework」は「Arduino」を選択してください。
「Location」のはてなマークにカーソルを重ねるとデフォルトの保存場所がわかります。もし変えたければチェックを外して保存場所を指定してください。
保存場所はパスに日本語が含まれないようにしてください。日本語が含まれているとあとでエラーが出ます。ドキュメントやデスクトップなどに保存するときは要注意です。
「Finish」を押すとプロジェクトが作成されます。これには数分かかることもあるのでしばらく待ちましょう。
準備が終わると次のようなファイル構成のフォルダが生成されます。
プログラムの作成・書き込み
プログラムはsrc > main.cpp
に書いていきます。
開いてみるとarduinoのようなテンプレートがすでに書いてありますね。
arduino言語の書き方は検索すればたくさん出てくるのでここでは省略します。
ここでは、Nucleoのボードにすでに実装されているスイッチとLEDを使ってみます。
次のコードはスイッチが押されたときにLEDが光るというものです。
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
pinMode(PA5_ALT0,OUTPUT);
pinMode(PC13_ALT0,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if(!digitalRead(PC13_ALT0)){
digitalWrite(PA5_ALT0,HIGH);
}
else{
digitalWrite(PA5_ALT0,LOW);
}
}
Nucleo STM32F446REではボード上のLEDはPA5、スイッチはPC13に割り当てられているのでそれらを使っています。PA5_ALT0はLED_BUILTINでも代用できます。
大体Arduinoと同じように書けます。
コードが書けたらNucleoに書き込みましょう。
パソコンとNucleoをUSBでつないで、左下の「→」ボタンを押してください。
チェックがビルド、右矢印が書き込みです。Arduino IDEと同じですね。
このようにターミナルに「SUCCESS」と表示されれば書き込み完了です。
ボード上の青いスイッチを押すとLEDが光り、離すと消えるようになれば成功です。
まとめ
ArduinoフレームワークをつかってVScodeからSTM32のプログラムを書く方法を解説しました。
STM32CubeIDEのHALなどよりも断然使いやすく、簡単だと思うのでおススメです。
何か疑問点や間違いがございましたら是非コメントをお願いします。