Hobby Lab 趣味のモノ作り実験のサイトです。
Software 開発環境 STM32 開始
--------- menu ---------
1 STM32使用の経緯
2 STM32CubeIDE
2.1 STM32CubeIDEとは
2.2 STM32CubeIDE以前の開発は
2.3 インストール準備
2.4 インストール
2.5 SSTM32CubeIDEの起動
2.6 アンインストールする方法

3 LEDを点滅させて見よう

4 STM32CubeMX
4.1 STM32CubeMXの準備
4.2 OpenJDK 21のインストール
4.3 STM32CubeMXのインストール
--------- 関係 ---------

■ソフトウェア

開発環境 IDE ●STM32
 STM32CubeIDEでプログラム
 HALと直接レジスター操作の速度

●CH32
 MounRiver Studioでプログラム

●Arduino
1.概要と導入
2.各ボード毎の設定
 Uno 設定
 Mega2560設定
 DUE_CH340設定
 ESP_WROOM02設定
 ESP12F_D1mini設定
 ESP32設定
 CH32V203の設定
3.ライブラリー
 OneWire使い方
4.その他
 日本語リファレンス
 WiFi Macアドレスを調査


■部品

プロセッサ関係部品関係リスト

●プロセッサ
1.動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較

2.raspberrypi関係
 RaspberryPiハード

3.STM32関係
 -STM32 IDE
 STM32CubeIDEでプログラム
 HALと直接レジスター操作の速度

4.CH32関係
 -CH32V203K8T6
 V203K8T6開始
 -CH32V203C8T6
 V203C8T6開始
 -CH32 IDE
 Arduinoでプログラム
 MounRiver Studioでプログラム
 -CH32共通
 CH32V203データシート
 CH32V203K8T6取説について
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信

5.arduino関係

6.ESP12関係
 (a)ESP-8266D1mini注意

●その他
 RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター

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の最大出力周波数に違いが出たのに原因が分からない!

2 STM32CubeIDE

STM32CubeIDEは、STM32マイクロコントローラ向けのSTマイクロエレクトロニクスが提供する無料の統合開発環境(IDE)です。
しかしSTMの統合開発環境の経緯を知らなかったのと、膨大なテキストデータから、多少無駄な回り道をしてしまった。
回り道となったSTM32CubeMX 単体のインストール方法は4章です。
と言うことで統合開発環境の経緯など知っておいたほうが良いと思うので、2.1、2,2で簡単に紹介します。

 2.1 STM32CubeIDEとは

STM32CubeIDEは、2019年4月にバージョン1.0.0が初めてリリースされました。
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を組み合わせ、自前で開発環境を構築する手法も根強くありました。

 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 に変更し、ホームディレクトリーに移動しました。

 2.4 インストール

端末を起動して、インストールするファイルのディレクトリーへ移動して『sudo bash st.sh』と入力して実行しました以下下記の様に入力して行きます。
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:~$

これでSTMicroelectronics STM32CubeIDE 1.19.0 のインストールが完了しました。


 2.5 SSTM32CubeIDEの起動

最初に STM32CubeIDE を起動した場合、下図の様なダイアログボックスが表示されます。

内容は
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
で削除が出来る。




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 をインストールしたので、最後の章として残したいと思います。
ではインストール開始!

 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 で バージョンアップが必要でした。
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 を使用したインストールは出来ませんでした。
hobbylab@GZBOX:~$ sudo apt install openjdk-21-jdk
[sudo] hobbylab のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
E: パッケージ openjdk-21-jdk が見つかりません
2025年9月14日時点のmint 22.2 ではJAVAも最新が入っており問題無いようだが、当方のパソコンでOSを入れ替えるにはwineを使用したアプリのインストールやメールの設定など多くの手間が必要となるので、他の方法で対応することにしました。
支障がでれば、新しいバージョンのOSにしようと思います。

 4.2 OpenJDK 21のインストール

1.インストール概略
①.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 )
となります。

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 ・・・⑤

 ⑥OpenJDK 21のPATHを通す。
~/.bashrc
の末尾に以下の内容を追記する。
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)

 4.3 STM32CubeMXのインストール

ダウンロードしたファイルは
en.stm32cubemx-lin-v6-14-1.zip
です。
ダウンロードしたファイルを解凍する。
解凍した場所を
STM32Cube
とした場合に下記のようにSTM32CubeMXをインストールする。
hobbylab@GZBOX:~/STM32Cube$ ./SetupSTM32CubeMX-6.14.1
・ ・ ・ 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

この画面が出ればOK!




































更新日 2025/09/19 16:59  Administrator Takeshi Hirabayashi