STM32の開発環境まとめ
Note 2022/05/11:
1年以上経って情報が古くなったりしたので加筆してバージョンアップしちゃいました。
概要
STM32マイコンって開発環境多すぎん?っていう話です。あるサイトにはmbed、あるサイトにはPlatformIO、あるサイトにはSTM32CubeIDE…。初心者殺しな気がします。
というわけで僕が今まで触ったことのある開発環境をとりあえずまとめてみます。開発環境が複数用意されているのはSTM32マイコンの利点でもあるのですが、逆に欠点でもあるわけです。
初めて選ぶ人の感覚的な指標になるように扱いやすさと複雑なことができるの二つを⭐️3つを満点とする三段階評価にしました。
PlatformIO
扱いやすさ:⭐️⭐️⭐️
複雑なことができる:⭐️⭐️
白熊的推しはこれです。PlatformIOさえ入れておけばとりあえずなんとかなると思ってもらって大丈夫だと思います。
他に何も準備しなくても簡単に書き込むことができます。アプリケーションではなくVSCode、Atom(ただしVSCode推奨)の拡張機能として提供されます。自分のお気に入りのエディタでマイコン開発できるメリットは非常に大きいです。
対応フレームワーク
- Arduino
- mbed
- STM32CubeIDE(HAL, LL)
- CMSIS等その他色々(しろくまが使ったことないのでごめんなさい🙇)
メリット
- Arduinoやmbedなど使い慣れた言語で開発できる
- ユーザー数が多いので少し調べたらすぐに情報が見つかる
- コンパイルはまぁまぁ速い
- デバッグ(実行中に変数の中身を見たりすること)ができる
- STM32マイコン以外(Arduino含む)もPlatformIOで開発できる
- さまざまな書き込み方法(DFUなど)に対応している
- お気に入りのVS Code環境を使うことができる
- 色々フレームワークを選べる
- ライブラリの管理が優秀(検索してインストールボタン押すだけ)
デメリット
- 全てのSTM32マイコンに対応しているわけではない
- 初回のコンパイルがめっちゃ遅い(それ以降は速い)
mbed
こちらも名のしれたmbedです。ブラウザさえあれば他に何もインストールしなくても開発できます。
扱いやすさ:⭐️⭐️
複雑なことができる:⭐️
メリット
- 何もインストールしなくても開発できる
- パソコンのストレージを食わない
- mbedなので情報がたくさん
デメリット
- オフラインで使えない
- アカウントを作成する必要がある
- エディタが絶妙に使いにくい
- mbed以外での開発ができない
- デバッグできない
STM32CubeIDE
STM32が公式で出している開発環境です。公式なだけあって機能はとても豊富です。逆にこれでできないことは他の開発環境でもできないことが多いです。eclipseベースなのでeclipse信者の方はこれが肌に合うかもしれません。
ただLチカするだけなのに大量のコードを書く羽目になるので本格的な開発にはいいとは思いますが、プロトタイピングには向かないかもしれません。
扱いやすさ:⭐️
複雑なことができる:⭐️⭐️⭐️
メリット
- 基本これでできないことはない
- ピン衝突を防ぎながらピン割り当てができる
- eclipse LOVEな人は使いやすい
- DMA(Direct Memory Access)という神機能が使える
- マイコンのクロックも自由自在
- デバッグできる
難しすぎて逆に使っていくうちにマイコンの仕組みが理解できる
デメリット
- Arduino言語やmbedのような直感的なコード記述ではない
- C/C++言語の知識がない人には相当厳しい
- NucleoのArduino互換のピン配置の必要性があんまりなくなる
- 書き込みがちょっと遅い
STM32duino
扱いやすさ:⭐️⭐️⭐️
複雑なことができる:⭐️
ArduinoIDEのボードマネージャーに追加することでSTM32マイコンを開発できるようにする手法です。何もわからずとりあえずNucleoをノリで買ってみた人でも簡単にArduino感覚で使えます。
でも正直これ使うくらいだったらPlatformIOでArduinoのフレームワークで開発した方が使いやすいと思います。
メリット
- ArduinoIDE持ってる人はそのままでいい
- Arduino言語で記述できる
- ちゃんと使えるシリアルモニタがある
デメリット
- ArduinoIDE自体元々そんなに使いやすいものでもない
- コンパイルが遅い
- 書き込み方法が選べない(選べそうなメニューはあるがうまくいった試しがない)
終わりに
それぞれの書き込み方法やチュートリアルとかは結構Qiitaとかに出回ってたりするんですが、開発環境まとめみたいなのがあんまりなかった(気がする)ので書いてみました。やっぱり開発環境や言語を選べるのはSTM32マイコンの強みかもしれませんね。
僕はとりあえずここに載せた全ての方法は食わず嫌いせずに一通り使ったことがあるので、もし質問とかあれば遠慮なくDMやリプください。
ではまた✌️
Comments