最終更新日 2024年2月2日
※2024/2/2 間違い指摘を受け、BulePillのpinアサインを修正しました。図は間違っていなかったようです。
ArduinoIDEはクロスコンパイル可能な開発環境です。
ここはターゲットデバイスがBluePill(STM32F103)の場合の開発環境構築の備忘録です。
LeafLabsをルーツとするRoger Clark氏の作成された【Arduino STM32】の構築方法です。
STM32duino-bootloaderを組み込むことで、BluePillに対してUNOと同等の開発環境が提供されます。注意点
- Arduino1.8.xで使用可能です。2.xでは残念ながら構築出来ません。
- STM32duino-bootloaderは一旦書き込めば安泰というわけではありません。スケッチ書込で壊れてしまうことがあります。
その場合は再度STM32duino-bootloaderを書込直す必要があります。Arduino IDE インストール方法
自身のPC環境に応じたArduinoIDEをArduinoの公式サイトのSOFTWARE>Downloadsページから選択して手元のPC環境にダウンロードして、手順に従ってインストールします。
※ここでは必ず1.8.19以降を選んでインストールしてください。2.xは使用出来ません。
※インストーラ/ZIP形式が用意されていますが、登録先を維持するためにインストーラを使用する事をお勧めします。
※Arduino団体への寄付を求められます。寄付しなくても特に制限はないようです。追加のボードマネージャのURL登録
Arduino IDEのメニューで ファイル ⇒ 環境設定 を選択し、「追加のボードマネージャのURL」に以下URLを入力し「OK」をクリックします。
http://dan.drown.org/stm32duino/package_STM32duino_index.jsonボードパッケージのインストール
Arduino IDEのメニューで ツール ⇒ ボード ⇒ ボードマネージャ を選択。
検索欄に「stm32」と入力し検索されたものの中から「STM32F1xx/GD32F1xx boards」をインストールする。対象ボードをSTM32F103に設定
メニューの「ツール」をクリックし、以下の図のようにボードを「STM32F103」に設定し、その他の項目も同様になっていることを確認してください。
特にSTM32F103はフラッシュメモリのサイズが型番と合致しない事があります。128kBを選んでおいた方が良いかと思います。
ブートローダの書込
ターゲットボードに既にブートローダが書き込まれている場合(例えばSTM32mini)はスキップしてください。
書き込まれていない場合は、PCとUSB接続する前にターゲットボードにブートローダを書き込んでおく必要があります。
参照:BluePillに対してブートローダを書き込む方法
ブートローダは結構壊れます。修復する作業の効率化のために書込ツールを用意されることをお勧めします。
- 予めRoger Clark氏のサイトからブートローダをダウンロードしておきます。
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries
一般にBluePillは generic_boot20_pc13.bin を使用します。- ターゲットデバイスのBOOT0のシャンパを1(ISP ブートモード)にセットします。
- ターゲットデバイスとUSBシリアル変換ボードを接続します。
RS232のクロス接続です。
USBシリアル BluePill TX RX(PA9)RX(PA10)RX TX(PA10)TX(PA9)- USBシリアル変換ボードをPCに接続します。
- 接続されたUSBシリアル変換ボードが認識されているCOMポートを確認します。
※デバイスマネージャ等で確認出来ます。- コマンドプロントを起動します。
- 以下のコマンドを打ち込んで実行します。※バッチファイルに纏めても構いません。
@echo off
SET COM_PORT=COMxx
stm32flash.exe -f -v -w generic_boot20_pc13.bin %COM_PORT%- ターゲットデバイスのBOOT0のシャンパを0に戻します。
プログラムの作成
とりあえずはサンプルスケッチの優:Blink.inoを選択して開いてください。
LEDはPC13にアサインされていますが、“LED_BUILTIN”で動くはずです。コンパイル
いきなり【マイコンボードに書き込む】では無く、【検証】を実行してコンパイルが通るか確認します。
エラーが出るようで有れば修正します。バイナリコードの書込
PCとターゲットボードが接続され、シリアルポートが認識されているか確認します。
【マイコンボードに書き込む】を実行します。動作確認
ターゲットボードのリセットキーを押してプログラムを再起動させ動作確認します。
ArdinoIDEでプログラムのデバッグする場合は、スケッチにSerial.print文を挿入して、ステップ確認や値内容の確認をすることになります。BreakPointを置いたりしたい場合はArdinoIDEでのデバッグは出来ません。ただ、Arduinoは可成りコーディングルールがまかり通っており、結構デバッグできます。
ただ、使用しているライブラリ内部の問題だったりしたら、そのライブラリはあっさり諦めて別のライブラリを使用しましょう
免責事項
本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。
商標・登録商標
Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。