1 STM32使用の経緯

2025年7月ごろからMPUが安価なことから手を出してしまった『CH32V203』はRISC-Vですが、このRISC-Vを調べているとArmアーキテクチャのCPUと言う言葉が出てきてきており、
この頃からArmアーキテクチャのCPUも使いたいと思っていた。
そして9月初旬 CH32V203のLEDの点灯プログラミングで行き詰まっているとき(※1)に気休めにamazomで非常に安価なSTM32F103C8T6評価ボードを見つけ、これが『ArmアーキテクチャのCPU』だと言う事が判り購入してしまった。
しかし購入した翌日・・以前STM32・・???を購入してた様な・・で調べてみるとSTM32-Discovery、My-MiniSTM32V、STM401RE・ST446REの評価ボードを購入していた事が判った。 ボケていることを再認識!
泥沼にハマった気分だが、このSTM32は最初にプログラムで書く必要のあるクロックや入出力のレジスタの設定が簡単に出来るようです。
購入品が届く前に右上のSTM32F401RE評価ボードでLEDの点滅までが出来るだろうと思い記録にした。
なお amazonで購入したSTM32F103C8T6評価ボードだが『Youmile ST-Link V2エミュレータプログラミングユニットダウンローダ + 40ピンSTM32F030C8T6 ARM評価ボード +
FT232RL FTDIモジュール マイクロUSBケーブル デュポンケーブル ミニUSBケーブル付き』が 送料込999円
非常に安価なので心配だが商品内容は
ST-Link V2エミュレータ、STM32F103C8T6 ARM評価ボード、FT232RL FTDIモジュール、マイクロUSBケーブル、デュポンケーブル、ミニUSBケーブルとなっている。
※1:CH32V203K8T6とCH32V203C8T6のGPIOについて試しのプログラムをしていたが、両製品の特性の違い・不良か、プログラム不良なのか、GPIOの最大出力周波数に違いが出たのに原因が分からない!
そして9月初旬 CH32V203のLEDの点灯プログラミングで行き詰まっているとき(※1)に気休めにamazomで非常に安価なSTM32F103C8T6評価ボードを見つけ、これが『ArmアーキテクチャのCPU』だと言う事が判り購入してしまった。
しかし購入した翌日・・以前STM32・・???を購入してた様な・・で調べてみるとSTM32-Discovery、My-MiniSTM32V、STM401RE・ST446REの評価ボードを購入していた事が判った。 ボケていることを再認識!
泥沼にハマった気分だが、このSTM32は最初にプログラムで書く必要のあるクロックや入出力のレジスタの設定が簡単に出来るようです。
購入品が届く前に右上のSTM32F401RE評価ボードでLEDの点滅までが出来るだろうと思い記録にした。

非常に安価なので心配だが商品内容は
ST-Link V2エミュレータ、STM32F103C8T6 ARM評価ボード、FT232RL FTDIモジュール、マイクロUSBケーブル、デュポンケーブル、ミニUSBケーブルとなっている。
※1:CH32V203K8T6とCH32V203C8T6のGPIOについて試しのプログラムをしていたが、両製品の特性の違い・不良か、プログラム不良なのか、GPIOの最大出力周波数に違いが出たのに原因が分からない!
2 STM32CubeIDE
STM32CubeIDEは、STM32マイクロコントローラ向けのSTマイクロエレクトロニクスが提供する無料の統合開発環境(IDE)です。
しかしSTMの統合開発環境の経緯を知らなかったのと、膨大なテキストデータから、多少無駄な回り道をしてしまった。
回り道となったSTM32CubeMX 単体のインストール方法は4章です。
と言うことで統合開発環境の経緯など知っておいたほうが良いと思うので、2.1、2,2で簡単に紹介します。
しかしSTMの統合開発環境の経緯を知らなかったのと、膨大なテキストデータから、多少無駄な回り道をしてしまった。
回り道となったSTM32CubeMX 単体のインストール方法は4章です。
と言うことで統合開発環境の経緯など知っておいたほうが良いと思うので、2.1、2,2で簡単に紹介します。
2.1 STM32CubeIDEとは
STM32CubeIDEは、2019年4月にバージョン1.0.0が初めてリリースされました。
STマイクロエレクトロニクスがAtollic社を買収したことに伴い、既存の統合開発環境であった「TrueSTUDIO」や「SW4STM32」の後継として提供され始めました。
STM32CubeMXと統合されたことで、よりスムーズな開発が可能になりました。
STマイクロエレクトロニクスがAtollic社を買収したことに伴い、既存の統合開発環境であった「TrueSTUDIO」や「SW4STM32」の後継として提供され始めました。
STM32CubeMXと統合されたことで、よりスムーズな開発が可能になりました。
2.2 STM32CubeIDE以前の開発は
STM32CubeMX + 他社のIDE: STM32CubeIDEが統合する前は、デバイスの設定や初期化コードの自動生成を行う「STM32CubeMX」と、別の統合開発環境を組み合わせて使うのが一般的でした。
Keil MDK: ARMマイコン向けの商用統合開発環境で、STM32CubeMXで生成したプロジェクトを読み込んで使用できました。
IAR Embedded Workbench: Keil MDKと同様に、広く利用されていた商用IDEです。
GCC + Eclipse: オープンソースのGCCコンパイラとEclipseを組み合わせ、自前で開発環境を構築する手法も根強くありました。
Keil MDK: ARMマイコン向けの商用統合開発環境で、STM32CubeMXで生成したプロジェクトを読み込んで使用できました。
IAR Embedded Workbench: Keil MDKと同様に、広く利用されていた商用IDEです。
GCC + Eclipse: オープンソースのGCCコンパイラとEclipseを組み合わせ、自前で開発環境を構築する手法も根強くありました。
2.3 インストール準備
今回使用する統合開発環境は『STM32CubeIDE』です。
ダウンロードはST社 STM32用統合開発環境 STM32CubeIDEから Windows® / Linux® / macOS®(64bitバージョンのみ)をダウンロード出来ます。
なおLinuxはDebian,Generic,RPMタイプがあります。
今回私はLinuxのDebianタイプをインストールします。
インストールおよびアンインストールは UM2563 User manual STM32CubeIDE installation guideに記載されているようですが、私は以下方法で端末から入力しインストールしました。
ダウンロードしたファイル名が st-stm32cubeide_1.19.0_25607_20250703_0907_amd64.deb_bundle.sh と非常に長いので、ファイル名を st.sh に変更し、ホームディレクトリーに移動しました。
ダウンロードはST社 STM32用統合開発環境 STM32CubeIDEから Windows® / Linux® / macOS®(64bitバージョンのみ)をダウンロード出来ます。
なおLinuxはDebian,Generic,RPMタイプがあります。
今回私はLinuxのDebianタイプをインストールします。
インストールおよびアンインストールは UM2563 User manual STM32CubeIDE installation guideに記載されているようですが、私は以下方法で端末から入力しインストールしました。
ダウンロードしたファイル名が st-stm32cubeide_1.19.0_25607_20250703_0907_amd64.deb_bundle.sh と非常に長いので、ファイル名を st.sh に変更し、ホームディレクトリーに移動しました。
2.4 インストール
端末を起動して、インストールするファイルのディレクトリーへ移動して『sudo bash st.sh』と入力して実行しました以下下記の様に入力して行きます。
これでSTMicroelectronics STM32CubeIDE 1.19.0 のインストールが完了しました。

hobbylab@GZBOX:~ $ sudo bash st.sh
[sudo] hobbylab のパスワード:**********
Creating directory makeself_dir_4jAoyg
Verifying archive integrity... 100% All good.
Uncompressing STM32CubeIDE installer 100%
STMicroelectronics Software License Agreement
[ STマイクロエレクトロニクス ソフトウェアライセンス契約が表示されるので ↓キーで最後まで文章を確認してください。] SLA0048 Rev4/March 2018
・
・
[内容を確認した後、 yes と入力すると下記表示がされるので、良ければ y を入力して行きます。]
...skipping 1 line
I ACCEPT (y) / I DO NOT ACCEPT (N) [N/y] y
License accepted.
OS Version: 6
Do you want to install Segger J-Link udev rules? [Y/n] y
Version 210702
Important - Read carefully:
[ J-Linkについて表示されるので ↓キーで最後まで文章を確認してください。]
DEFINITIONS: ・
・
[内容を確認した後、 yes と入力すると下記表示がされるので、良ければ y を入力して行きます。]
...skipping 1 line
I ACCEPT (y) / I DO NOT ACCEPT (N) [N/y] y
[STM32CubeIDEのインストールが開始します 。]
・
・
hobbylab@GZBOX:~$
[sudo] hobbylab のパスワード:**********
Creating directory makeself_dir_4jAoyg
Verifying archive integrity... 100% All good.
Uncompressing STM32CubeIDE installer 100%
STMicroelectronics Software License Agreement
[ STマイクロエレクトロニクス ソフトウェアライセンス契約が表示されるので ↓キーで最後まで文章を確認してください。] SLA0048 Rev4/March 2018
・
・
[内容を確認した後、 yes と入力すると下記表示がされるので、良ければ y を入力して行きます。]
...skipping 1 line
I ACCEPT (y) / I DO NOT ACCEPT (N) [N/y] y
License accepted.
OS Version: 6
Do you want to install Segger J-Link udev rules? [Y/n] y
Version 210702
Important - Read carefully:
[ J-Linkについて表示されるので ↓キーで最後まで文章を確認してください。]
DEFINITIONS: ・
・
[内容を確認した後、 yes と入力すると下記表示がされるので、良ければ y を入力して行きます。]
...skipping 1 line
I ACCEPT (y) / I DO NOT ACCEPT (N) [N/y] y
[STM32CubeIDEのインストールが開始します 。]
・
・
hobbylab@GZBOX:~$
これでSTMicroelectronics STM32CubeIDE 1.19.0 のインストールが完了しました。

2.5 SSTM32CubeIDEの起動


内容は
STM32CubeIDE ランチャー
ワークスペースとしてディレクトリを選択して下さい
STM32CubeIDE は、ワークスペースディレクトリに設定と開発成果物を保存します。
□これをデフォルトとして使用し、今後は確認メッセージを表示しません。
□にチェックを入れて、[Launch]ボタンをクリックすると 右上図のSTM32CubeIDE が表示されます。
最初に起動した後の終了時に下記のダイヤログボックスが表示されますので[OK]ボタンをクリックして下さい。

内容は
STマイクロエレクトロニクスの製品改善にご協力ください。
ST int N.V(データ管理者)は、匿名の使用統計情報を収集・使用します(STが直接収集または収集した統計は、将来的な影響についてSTが判断します)。
また、メニューから設定を更新することもできます。
Window > Preferences > STM32Cube >End User Agreements
詳細については、 データ収集情報に関するお知らせと 利用規約をご覧ください。
これで準備は完了しました!
2.6 アンインストールする方法
STM32CubeIDEのアンインストールする方法は
削除用のshファイルが無いので、端末から下記のようにしました。
sudo dpkg -r st-stm32cubeide-|version|
sudo dpkg -r st-stlink-server
sudo dpkg -r st-stlink-udev-rules
sudo dpkg -r segger-jlink-udev-rules
で削除が出来る。
削除用のshファイルが無いので、端末から下記のようにしました。
sudo dpkg -r st-stm32cubeide-|version|
sudo dpkg -r st-stlink-server
sudo dpkg -r st-stlink-udev-rules
sudo dpkg -r segger-jlink-udev-rules
で削除が出来る。
3 LEDを点滅させて見よう
1.プログラムのプロジェクトを作成
STM32CubeIDEの左上の[Start new STM32 Project]を実行※またはSTM32CubeIDEメニュー[File][New][STM32 Project]を実行

2.プログラムするボードの選択
①[Board Selecter][NUCLEO-F401RE]を選択
①、[Next]を実行

3.プロジェクト名を設定
プロジェクト名を入力して[Finish]を実行ここではプロジェクト名を「 401RE_test 」と入力した。

問に答える
全てのペリフェラルをディフォルトモードで初期化しますか?の問に[Yes]を実行
2回目に作成したプロジェクトでは出現しなかった
デバイス設定ツールエディタは、デバイス設定ツールパースペクティブに関連つけられています。このパースペクティブを今すぐ開きますか?の問に[No]を実行

次に進む
2回目に作成したプロジェクトでは出現しなかった処理途中に[Next]ボタンの色が変化するので、[Next]を実行する。

4.プログラムの設定保存
[File][Save]の実行またはショートカットキー [Ctrl]+[S]を打つ。
5.MPUの設定を生成か決定
コードを生成するかの問に[Yes]を実行
6.LED点滅プログラム書き込み
[Core][Src][min.c]をクリックすると右側にmain,cのプログラムが表示されるmain()のプログラム群にwhile(1){ }が記載されており、カッコ内に図のようなプログラムを記載する。


7.USBコードで接続する
NUCLEO-F401REはSTーLINKが内蔵されています。ST-LINK(エスティーリンク)は、STマイクロエレクトロニクス社のSTM32やSTM8といったマイクロコントローラ(マイコン)向けに、コードを書き込んだり(プログラマー)、動作を制御・解析したり(デバッガ)するためのツールです。
開発が完了すれば、右写真の赤線の部分で切断しても使用が出来ます。
パソコンとNUCLEO-F401REをUSBコードで接続する。
8.プログラムを書き込む
STM32CubeIDEの上に表示されている① [Build All]を実行
② [Run]を実行

9.動作状況

4 STM32CubeMX
私は最初勘違いをしていて(SSTM32CubeIDEの経緯を知らなかったので)、この章でインストールする STM32CubeMX が ST32CubeIDE に必要と思い込んで進めました。
それは間違いで、ST32CubeIDE には最初から以下に説明するJAVAが不要な STM32CubeMX の機能が内蔵されており、不要と言うことが以下の STM32CubeMX をインストールしてから判ったのが残念です。
この STM32CubeMX が必要なものは ST32CubeIDE 以外の統合環境でした。・・経緯が判ってなを残念!
せっかく悩みながら STM32CubeMX をインストールしたので、最後の章として残したいと思います。
ではインストール開始!
それは間違いで、ST32CubeIDE には最初から以下に説明するJAVAが不要な STM32CubeMX の機能が内蔵されており、不要と言うことが以下の STM32CubeMX をインストールしてから判ったのが残念です。
この STM32CubeMX が必要なものは ST32CubeIDE 以外の統合環境でした。・・経緯が判ってなを残念!
せっかく悩みながら STM32CubeMX をインストールしたので、最後の章として残したいと思います。
ではインストール開始!
4.1 STM32CubeMXの準備
STM32CubeMXは、STM32マイクロコントローラおよびマイクロプロセッサをきわめて容易に設定でき、さらにArm® Cortex®-Mコア、
またはArm® Cortex®-Aコア用の部分的Linux®デバイス・ツリーの対応する初期化Cコードが簡単なプロセスで生成可能なグラフィカル・ツールです。(メーカーのキャッチコピーのコピーです)
この様なツールはCH32Vの開発環境には無い(system_ch32v20x.c クロックの設定だけは有る)ものです。
今回インストールする STM32CubeMX は バージョンが6.15.0 で Java Runtime (JRE)で動作しますが、OpenJDK 21 が必要です。
しかし当方の OS(Debian Edition LMDE)では openjdk 17.0.16 2025-07-15 で バージョンアップが必要でした。
支障がでれば、新しいバージョンのOSにしようと思います。
この様なツールはCH32Vの開発環境には無い(system_ch32v20x.c クロックの設定だけは有る)ものです。
今回インストールする STM32CubeMX は バージョンが6.15.0 で Java Runtime (JRE)で動作しますが、OpenJDK 21 が必要です。
しかし当方の OS(Debian Edition LMDE)では openjdk 17.0.16 2025-07-15 で バージョンアップが必要でした。
hobbylab@GZBOX:~/STM32CubeMX$ java -jar STM32CubeMX
エラー: メイン・クラスcom.st.microxplorer.maingui.STM32CubeMXのロード中にLinkageErrorが発生しました
java.lang.UnsupportedClassVersionError: com/st/microxplorer/maingui/STM32CubeMX has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
hobbylab@GZBOX:~/STM32CubeMX$
また OpenJDK 21 のインストールについても、当方のOSが対応していないため、端末から apt を使用したインストールは出来ませんでした。
エラー: メイン・クラスcom.st.microxplorer.maingui.STM32CubeMXのロード中にLinkageErrorが発生しました
java.lang.UnsupportedClassVersionError: com/st/microxplorer/maingui/STM32CubeMX has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
hobbylab@GZBOX:~/STM32CubeMX$
hobbylab@GZBOX:~$ sudo apt install openjdk-21-jdk
[sudo] hobbylab のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
E: パッケージ openjdk-21-jdk が見つかりません
2025年9月14日時点のmint 22.2 ではJAVAも最新が入っており問題無いようだが、当方のパソコンでOSを入れ替えるにはwineを使用したアプリのインストールやメールの設定など多くの手間が必要となるので、他の方法で対応することにしました。[sudo] hobbylab のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
E: パッケージ openjdk-21-jdk が見つかりません
支障がでれば、新しいバージョンのOSにしようと思います。
4.2 OpenJDK 21のインストール
1.インストール概略
2.インストール
①ダウンロード
⑥OpenJDK 21のPATHを通す。
①.OpenJDK 21のダウンロード
②.現在のJDKを削除する。
③.OpenJDK 21の解凍ファイルを格納する場所を作成
④.③の場所へ移動
⑤.OpenJDK 21を解凍する ⑥.OpenJDK 21のPATHを通す。
です。
なお openjdk 17 に戻す方法については
⑦.OpenJDK 21のPATHを削除する。
⑧.OpenJDK 21の格納場所を含むディレクトリー、ファイル全てを削除する。『sudo rm -rf /usr/java』
⑨.openjdk-17をインストールする。『sudo apt install openjdk-17-jdk』(versionは openjdk 17.0.16 )
となります。
②.現在のJDKを削除する。
③.OpenJDK 21の解凍ファイルを格納する場所を作成
④.③の場所へ移動
⑤.OpenJDK 21を解凍する ⑥.OpenJDK 21のPATHを通す。
です。
なお openjdk 17 に戻す方法については
⑦.OpenJDK 21のPATHを削除する。
⑧.OpenJDK 21の格納場所を含むディレクトリー、ファイル全てを削除する。『sudo rm -rf /usr/java』
⑨.openjdk-17をインストールする。『sudo apt install openjdk-17-jdk』(versionは openjdk 17.0.16 )
となります。
2.インストール
①ダウンロード
OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9.tar.gz
ダウンロードしたファイルをホームディレクトリーへ移動する
②〜⑤ OpenJDK 21を解凍する。
ダウンロードしたファイルをホームディレクトリーへ移動する
hobbylab@GZBOX:~$ sudo apt remove --purge openjdk* ・・・②
・
hobbylab@GZBOX:~$ java -version ・・・削除されたことを確認
bash: /usr/bin/java: そのようなファイルやディレクトリはありません
hobbylab@GZBOX:~$ sudo mkdir /usr/java ・・・③
hobbylab@GZBOX:~$ cd /usr/java ・・・④
hobbylab@GZBOX:/usr/java$ sudo tar -zxvf ~/OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9.tar.gz ・・・⑤
・
hobbylab@GZBOX:~$ java -version ・・・削除されたことを確認
bash: /usr/bin/java: そのようなファイルやディレクトリはありません
hobbylab@GZBOX:~$ sudo mkdir /usr/java ・・・③
hobbylab@GZBOX:~$ cd /usr/java ・・・④
hobbylab@GZBOX:/usr/java$ sudo tar -zxvf ~/OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9.tar.gz ・・・⑤
⑥OpenJDK 21のPATHを通す。
~/.bashrc
の末尾に以下の内容を追記する。
export PATH=/usr/java/jdk-21.0.8+9/bin:$PATH
設定を反映させる。
の末尾に以下の内容を追記する。
export PATH=/usr/java/jdk-21.0.8+9/bin:$PATH
設定を反映させる。
hobbylab@GZBOX:~$ source ~/.profile ・・・⑥
hobbylab@GZBOX:~$ java -version ・・・バージョンが合っていればOK
openjdk version "21.0.8" 2025-07-15 LTS
OpenJDK Runtime Environment Temurin-21.0.8+9 (build 21.0.8+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.8+9 (build 21.0.8+9-LTS, mixed mode, sharing)
hobbylab@GZBOX:~$ java -version ・・・バージョンが合っていればOK
openjdk version "21.0.8" 2025-07-15 LTS
OpenJDK Runtime Environment Temurin-21.0.8+9 (build 21.0.8+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.8+9 (build 21.0.8+9-LTS, mixed mode, sharing)
4.3 STM32CubeMXのインストール
ダウンロードしたファイルは
en.stm32cubemx-lin-v6-14-1.zip
です。
ダウンロードしたファイルを解凍する。
解凍した場所を
STM32Cube
とした場合に下記のようにSTM32CubeMXをインストールする。
en.stm32cubemx-lin-v6-14-1.zip
です。
ダウンロードしたファイルを解凍する。
解凍した場所を
STM32Cube
とした場合に下記のようにSTM32CubeMXをインストールする。
hobbylab@GZBOX:~/STM32Cube$ ./SetupSTM32CubeMX-6.14.1
・ ・ ・ hobbylab@GZBOX:~/STM32Cube$
・ ・ ・ hobbylab@GZBOX:~/STM32Cube$
① | ②良ければチェックして[Next] | ③良ければチェックして[Next] |
---|---|---|
![]() | ![]() | ![]() |
④保存場所が良ければ[Next] | ⑤作成しても良ければ[Next] | ⑥インストール完了で[Next] |
![]() | ![]() | ![]() |
⑦スクリプトを作成するをクリック | ⑧格納場所、名が良ければ[Next] | ⑨完了で[Done] |
![]() | ![]() | ![]() |
途中のダイヤログボックスで設定したディレクトリに STM32CubeMX をインストールすることが出来ました。 これでJAVAよりSTM32CubeMXを起動する。
hobbylab@GZBOX:~$ java -jar STM32CubeMX/STM32CubeMX
・
・
・
2025-09-15 06:46:56,968 [INFO] WebApp:191 - Connection restablished
・
・
・
2025-09-15 06:46:56,968 [INFO] WebApp:191 - Connection restablished

この画面が出ればOK!