STM32F103C8T6 開発ボード（通称 Black Pill）セットアップ

これはそれこそ偉大な先輩たちが，たくさんの資料を残してくれていますので，それをたどっているだけなのですが，私の記録として残します。

# 目的
- Mac, Windows 両方でプログラム開発，書き込みができるようにします。
- オンボードのUSB端子を使って書き込み，シリアルモニターできるようにします。
- 開発環境は Arduino IDE を使いました。

# 準備したもの

- STM32F103C8T6 開発ボード Aliexpressで購入 いわゆるコピー品。BlackPill
- ST-LINK V2 コピー品？ 同じ店で購入

- Mac Mojave 10.14.6
- Windows 10 Home
    - 上記MacのVMware上で動いています。
    - BootcampのWindows 10 Homeも使っています。

# ボード準備（はんだ付け）

![P_20191221_111220_vHDR_Auto.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533274/55700c71-0364-5c5e-2c2e-ba8f93768980.jpeg)

- ST-LINKを接続するために，ICSP端子の4ピンヘッダをはんだ付けします。
- ICSPモードに入るため，CPUとなりの3ピンヘッダ2個をはんだ付けします。

# ブートローダー書き込み

Black Pillの場合は，**PB12**というブートローダーが必要なようです。これをダウンロードします。

https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/generic_boot20_pb12.bin

そのあとの手順は，有名なこちらのページから。

https://ht-deko.com/arduino/stm32f103c8t6.html#07

私の場合は，VMware上のWindows10で作業しました。

- ST-LINK Utilityをダウンロード，インストール。
- ST-LINK ファームウエアのアップデート
- Utilityを起動，ボードをISPブートモードにセットして接続
- generic_boot20_pb12.bin を指定して書き込み。
- ボードのジャンパーを元に戻します。

# Mac側 Arduino IDE 準備

これも山のように先人たちの資料がありますが，とにかくまとめます。

- ボード情報をインストール
    - Arduino SAM Boards (32-bits ARM Cortex-M3) by Arduino を ツール - ボード - ボードマネージャ から検索してインストール

- ライブラリーをインストール Mac独自手順
    - 以下から Zipをダウンロード。
        - https://github.com/rogerclarkmelbourne/Arduino_STM32
    - zip を展開すると Arduino_STM32-master フォルダーとなるので， ` ~/Documents/Arduino/hardware/ `を作って，丸ごとそこに移す。` ~/Documents/Arduino/hardware/Arduino_STM32-master/各ファイル `となる。

- 書き込みのための準備。以下の作業をしないと，Arduino IDEで書き込めません。（ハマりました）

    - Homebrewをインストール
        - https://brew.sh/
    - `brew install libusb`を実施

- スケッチを準備，設定は以下の感じ。
<img width="1142" alt="スクリーンショット 2019-12-21 12.14.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533274/9aa87075-771d-9d0f-e1ae-bcf4c598569c.png">

# Windows 10 Home の場合 Arduino IDE 作業
- Bootloaderは上記手順で導入済みとします。
- Arduino IDE 1.8.10をダウンロード，インストール。**Windows Store版はスケッチが書き込めない不具合がありました。（のちに修正されるかもしれませんが...）**
- Mac版と同様，Arduino SAM Boards (32-bits ARM Cortex-M3) パッケージをインストール。https://github.com/rogerclarkmelbourne/Arduino_STM32 をインストールフォルダ¥hardwareを作って保存。
- ドライバーのインストールは以下を参照

https://ht-deko.com/arduino/stm32f103c8t6.html#03

> drivers\win フォルダにある install_drivers.bat を ([管理者として実行] で) 実行し、USB DFU / Serial ドライバをインストールする。

- スケッチを書いて書き込み。

![コメント 2019-12-21 222549.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533274/72ff8f58-8993-afa2-676b-6570b0681758.png)
![コメント 2019-12-21 222514.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533274/3b114101-7a4a-4bbe-7f0f-db0ddf5988ec.png)

-（2019/12/22追記）VMware上のWindowsでは，スケッチの書き込みがうまくいきませんでした。これは，書き込み時にUSBをいったん離すときに，VMwareが再び「接続先は？」と聞いてくるので，タイムアウトしてまうようです。設定すればうまくいくかもしれませんが，面倒なので（失礼！）放置します。自分の環境では，必要があればBOOTCAMPのWindowsで確認します。（メインがMacなので。追記終わり）

# 注意，補足事項

- ブートローダー書き込み直後は，Arduino IDEでシリアルポート[Maple]が見えないのかもしれません。すみません，覚えていないです。そのようなwebページを見かけました。
- Macだけでブートローダーを書き込む手順もあるようですが，なんとなくですがST-LINKでWindowsの方が確実かと思ってそのような手順にしてしまいました。

# 2024/9/19 暫定追記

STM32CubeIDE 互換品ST-LINKでRunおよびDebugが（ちょっと動作不安定だが）できるようになった。

参考

- https://youtu.be/2OwUnupABec?si=ehZ-lLtDnWsb_iec

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533274/4f1d509a-3d22-86ed-f3b7-19f96732392b.png)

デバッグプローブを ST-LINK (OpenOCD) に。
Mode Setup - Reset Mode を Software system reset に。

Runすると書き込んでくれるが、再起動してくれない。いったんST-LINKをPCから外し（この時電源OFFする）、再度接続すると新しいプログラムで実行される。

Debugは普通にできるっぽいが、ちょっと動きが不安定？