
実習・STMマイコン内蔵ペリフェラルを活用するためのC++プログラミング
実習・STMマイコン内蔵ペリフェラルを活用するためのC++プログラミング
|
![]() ![]() |
【開催日】2025年10月31日(金) 10:00-17:00 1日コース
【セミナNo.】ES25-0091 【受講料】30,000円(税込)
【会場】東京・巣鴨 CQ出版社セミナ・ルーム [地図]
【セミナNo.】ES25-0091 【受講料】30,000円(税込)
【会場】東京・巣鴨 CQ出版社セミナ・ルーム [地図]

マイコンのプログラミングでやっかいな点の一つが,汎用入出力(GPIO)やタイマなどマイコンに内蔵されているペリフェラルのプログラミングである.かつては,ビギナでも簡単に使えることで定評のあるMbed(注1)というC++ベースのプログラム開発環境があり,よく使われるペリフェラルに対応するclass が提供されていた.そのためこのclass を使うと,ペリフェラルの中身をよく知らなくても,簡単にペリフェラルを使うプログラムを作ることができた.
ところで,ペリフェラルのプログラミングでは,マイコンのベンダーからは,ペリフェラルを扱うためのライブラリが提供されているケースが多いが,そのライブラリはC の関数として提供される場合が多いため,うまく使うためには,いろいろと苦労も多い.しかし,ペリフェラルに対応するC++ のclass を1度,作っておけば,後はプログラミングが格段に簡単になる.
このセミナでは,フリーで使え,デバッグ環境も整っているST マイクロエレクトロニクス社のSTM32CubeIDE を利用する.しかし残念なことに,STM32CubeIDE ではペリフェラルに対応するC++のclass は提供されていない.そこで,STM32CubeIDE で提供されているC ベースのペリフェラル用ライブラリを使って,ペリフェラルに対応するC++ のclass を作る方法を説明する.また,そのクラスを使ったプログラミングについて説明する.また,一部のプログラムでは,ペリフェラルのレジスタを直接アクセスする必要が出てくるが,その方法についても解説する.
なお,STM32CubeIDE でプログラムを開発する際に,多くの場合は最初にSTM32CubeMX というグラフィカルなツールを使い,マイコンやそのペリフェラルの設定を行う必要がある.しかし,ペリフェラルに対応するC++ のclass を作っておけば,STM32CubeMX を使うことなくプログラムの開発が可能となる.そのため,デフォルトで生成されるソース・ファイルの「/* USER CODE BEGIN 0*/」などに左右されず,自分自身のプログラム・コードを好きな場所に書くことができる.
(注1) Mbed とは,インストール不要で,ネットにつなげれば簡単にプログラムを開発できる統合開発環境のこと.現在,オンライン開発環境のサービスは終了.
※ このセミナでは,事前にブレッド・ボード上に組み立てた教材を使います.そのため,電子回路組立の経験がない方でも参加できます.
※ マイコン・ボード Nucleo-F446RE,実装済みのブレッド・ボード,講師作成のプログラム,およびセミナで作成したプログラムはお持ち帰り可能です.
●C++ を使い慣れていない方は
前日に開催される「実習・Cより開発効率アップ! C++言語によるSTMマイコンのプログラミング入門(STM32CubeIDE を利用)」を受講しておくことが望ましい.
●このセミナでは割引プランがございます…マイコン・ボードを多数お持ちの方はご検討ください
割引プランをご希望の方は,申込後,『割引プランで受講希望』 とメールでご返信ください.マイコン・ボードNucleo-F446REは事務局貸し出し品を使用して受講いただきます.受講料金は\3,000割引【27,000円(税込)】でご参加いただけます.
ところで,ペリフェラルのプログラミングでは,マイコンのベンダーからは,ペリフェラルを扱うためのライブラリが提供されているケースが多いが,そのライブラリはC の関数として提供される場合が多いため,うまく使うためには,いろいろと苦労も多い.しかし,ペリフェラルに対応するC++ のclass を1度,作っておけば,後はプログラミングが格段に簡単になる.
このセミナでは,フリーで使え,デバッグ環境も整っているST マイクロエレクトロニクス社のSTM32CubeIDE を利用する.しかし残念なことに,STM32CubeIDE ではペリフェラルに対応するC++のclass は提供されていない.そこで,STM32CubeIDE で提供されているC ベースのペリフェラル用ライブラリを使って,ペリフェラルに対応するC++ のclass を作る方法を説明する.また,そのクラスを使ったプログラミングについて説明する.また,一部のプログラムでは,ペリフェラルのレジスタを直接アクセスする必要が出てくるが,その方法についても解説する.
なお,STM32CubeIDE でプログラムを開発する際に,多くの場合は最初にSTM32CubeMX というグラフィカルなツールを使い,マイコンやそのペリフェラルの設定を行う必要がある.しかし,ペリフェラルに対応するC++ のclass を作っておけば,STM32CubeMX を使うことなくプログラムの開発が可能となる.そのため,デフォルトで生成されるソース・ファイルの「/* USER CODE BEGIN 0*/」などに左右されず,自分自身のプログラム・コードを好きな場所に書くことができる.
(注1) Mbed とは,インストール不要で,ネットにつなげれば簡単にプログラムを開発できる統合開発環境のこと.現在,オンライン開発環境のサービスは終了.
※ このセミナでは,事前にブレッド・ボード上に組み立てた教材を使います.そのため,電子回路組立の経験がない方でも参加できます.
※ マイコン・ボード Nucleo-F446RE,実装済みのブレッド・ボード,講師作成のプログラム,およびセミナで作成したプログラムはお持ち帰り可能です.
●C++ を使い慣れていない方は
前日に開催される「実習・Cより開発効率アップ! C++言語によるSTMマイコンのプログラミング入門(STM32CubeIDE を利用)」を受講しておくことが望ましい.
●このセミナでは割引プランがございます…マイコン・ボードを多数お持ちの方はご検討ください
割引プランをご希望の方は,申込後,『割引プランで受講希望』 とメールでご返信ください.マイコン・ボードNucleo-F446REは事務局貸し出し品を使用して受講いただきます.受講料金は\3,000割引【27,000円(税込)】でご参加いただけます.
●対象聴講者
・STM32CubeIDE でマイコンのプログラムを開発したいが,ハードルが高いと思っている方.
・STM32CubeIDE を利用して新しいプロジェクトを作る場合に,最初にSTM32CubeMX を
利用して行う,クロックの設定,ペリフェラルの設定などをわずらわしいと思っている方.
・マイコンのペリフェラルを使うために提供されているHAL ライブラリでプログラム作るのは
大変だと思っている方.
・マイコンのペリフェラルを使うプログラムをC++で簡単に作りたいと思っている方.
・ペリフェラルを使うため,自作のライブラリをC++のクラスとして作りたい方.
●講演の目標
・STM32CubeIDE でマイコンのプログラムが開発できるようになること.
・マイコンのペリフェラルを使う基本的なプログラムをつくれるようになること.
・ペリフェラルを使う自作のライブラリをC++のクラスとして作れるようになること.
●内容
1.マイコンを使うための第1歩
・セミナで使うマイコンの構成
・プログラム開発環境STM32CubeIDE
・class を使う「L チカ」のプログラム
・STM32CubeIDE でprintf を使う
2.GPIO を利用するためのクラス
・GPIO の内部構成
・GPIO を共通に使うための基底クラス
・ペリフェラルとビットバンド領域
・GPIO の基底クラスを継承する1 ビット出力用クラス
・GPIO の基底クラスを継承する1 ビット入力用クラス
・GPIO の1 ビット入出力用クラスを利用する複数ビット入出力用クラス
3.GPIO を利用するためのクラスの応用例
・RGB フルカラーLED の駆動
・外付けスイッチを利用するプログラミング
4.割込み処理とタイマのプログラミング
・割込み処理プログラミングの基礎
・割り込み処理で使うCMSIS(Arm 社Cortex-M ソフトウェア規格)の関数
・内蔵タイマを使うタイマ割込みのプログラミング
・マイコン外部に接続されたスイッチによる割込みのプログラミング
・割込み優先順位と多重割込み
5.シリアル・インターフェース(I2C)の使い方とセンサ,表示器のプログラミング
・I2C 方式とSPI 方式の比較
・I2C によるデータ転送手順
・I2C 用クラスの作成
・I2C 用クラスを利用するLCD キャラクタ表示器のプログラミング
・I2C 用クラスを利用する温度センサのプログラミング
6.RC サーボ・モータとステッピング・モータ駆動
・PWM 用クラスの作成
・PWM 用クラスを利用するRC サーボ・モータ駆動のプログラミング
・ステッピング・モータ駆動のプログラム
7.アナログ信号入出力のプログラミング
・低速A-D 変換用クラスと使用例
・高速A-D 変換用基底クラス
・基底クラスを継承するポーリング方式の派生クラス
・基底クラスを継承する割り込み方式の派生クラス
・高速(標本化間隔:1μs)A-D/D-A 変換のプログラミング

マイコン・ボードに各種機器を接続し,動かしている様子
※ 写真をクリックすると拡大できます

標本化間隔を1μsに設定してA-D変換器で標本化した100kHzの正弦波をそのままD-A変換器から出力している様子(オシロスコープは32回の平均を行うモードに設定)
※ 画像をクリックすると拡大できます
・STM32CubeIDE でマイコンのプログラムを開発したいが,ハードルが高いと思っている方.
・STM32CubeIDE を利用して新しいプロジェクトを作る場合に,最初にSTM32CubeMX を
利用して行う,クロックの設定,ペリフェラルの設定などをわずらわしいと思っている方.
・マイコンのペリフェラルを使うために提供されているHAL ライブラリでプログラム作るのは
大変だと思っている方.
・マイコンのペリフェラルを使うプログラムをC++で簡単に作りたいと思っている方.
・ペリフェラルを使うため,自作のライブラリをC++のクラスとして作りたい方.
●講演の目標
・STM32CubeIDE でマイコンのプログラムが開発できるようになること.
・マイコンのペリフェラルを使う基本的なプログラムをつくれるようになること.
・ペリフェラルを使う自作のライブラリをC++のクラスとして作れるようになること.
●内容
1.マイコンを使うための第1歩
・セミナで使うマイコンの構成
・プログラム開発環境STM32CubeIDE
・class を使う「L チカ」のプログラム
・STM32CubeIDE でprintf を使う
2.GPIO を利用するためのクラス
・GPIO の内部構成
・GPIO を共通に使うための基底クラス
・ペリフェラルとビットバンド領域
・GPIO の基底クラスを継承する1 ビット出力用クラス
・GPIO の基底クラスを継承する1 ビット入力用クラス
・GPIO の1 ビット入出力用クラスを利用する複数ビット入出力用クラス
3.GPIO を利用するためのクラスの応用例
・RGB フルカラーLED の駆動
・外付けスイッチを利用するプログラミング
4.割込み処理とタイマのプログラミング
・割込み処理プログラミングの基礎
・割り込み処理で使うCMSIS(Arm 社Cortex-M ソフトウェア規格)の関数
・内蔵タイマを使うタイマ割込みのプログラミング
・マイコン外部に接続されたスイッチによる割込みのプログラミング
・割込み優先順位と多重割込み
5.シリアル・インターフェース(I2C)の使い方とセンサ,表示器のプログラミング
・I2C 方式とSPI 方式の比較
・I2C によるデータ転送手順
・I2C 用クラスの作成
・I2C 用クラスを利用するLCD キャラクタ表示器のプログラミング
・I2C 用クラスを利用する温度センサのプログラミング
6.RC サーボ・モータとステッピング・モータ駆動
・PWM 用クラスの作成
・PWM 用クラスを利用するRC サーボ・モータ駆動のプログラミング
・ステッピング・モータ駆動のプログラム
7.アナログ信号入出力のプログラミング
・低速A-D 変換用クラスと使用例
・高速A-D 変換用基底クラス
・基底クラスを継承するポーリング方式の派生クラス
・基底クラスを継承する割り込み方式の派生クラス
・高速(標本化間隔:1μs)A-D/D-A 変換のプログラミング

マイコン・ボードに各種機器を接続し,動かしている様子
※ 写真をクリックすると拡大できます

標本化間隔を1μsに設定してA-D変換器で標本化した100kHzの正弦波をそのままD-A変換器から出力している様子(オシロスコープは32回の平均を行うモードに設定)
※ 画像をクリックすると拡大できます
【受講者が持参するもの】
・ 作成したプログラムなどを持ち帰るためのUSBメモリなど.
・ 作成したプログラムなどを持ち帰るためのUSBメモリなど.
【講師】
三上 直樹 氏〔職業能力開発総合大学校 名誉教授 〕
1977~1987年北大助手.1987~2017年職業能力開発総合大学校講師,助教授,教授.工学博士.「はじめて学ぶディジタルフィルタと高速フーリエ変換」などの書籍やインターフェース誌,トランジスタ技術誌の記事多数.ディジタル信号処理を専門とする.
三上 直樹 氏〔職業能力開発総合大学校 名誉教授 〕
1977~1987年北大助手.1987~2017年職業能力開発総合大学校講師,助教授,教授.工学博士.「はじめて学ぶディジタルフィルタと高速フーリエ変換」などの書籍やインターフェース誌,トランジスタ技術誌の記事多数.ディジタル信号処理を専門とする.
