WithHappySTM32マイコンのソフト開発を早く効率的にするのが、STM32CubeMXです。コード生成ツールのSTM32CubeMXの概要、使い方を示します。STM32CubeMXの使い方ビデオSTMが提供するSTM32CubeMX解説ビデオは、このページの右に2つあります。Startを見ると、5つの使いこなしポイントが判る(かも?)という内容です。STM32CubeMXのマニュアルUM1718もページ下にあります。この2ビデオとUM1718、その他の関連資料から、私なりにSTM32CubeMXの要点、使い方を纏めましたので以下に示します。STM32CubeMXのウイザードSTM32CubeMXは、4IDE(SW4STM32ほか3種IDE、前回記事参照)へプロジェクトファイルと初期設定(クロック設定と周辺回路)Cソースコードを自動生成します。Middlewareの3ウイザードです。Consumptionウイザードは、生成時の消費電力を評価する計算ツールです(使用例はコチラを参照)。G)実行で指定先へプロジェクトファイルが出力され、これをSW4STM32でImportすれば、初期設定コード付きのプロジェクトが得られます。従って、残りのユーザ処理をプロジェクトへ追加していけば、アプリ完成という段取りです。STM32CubeMXの2種ドライバライブラリ注意点は、デフォルトでSTM32CubeMXが生成するのは、HALドライバライブラリを使ったプロジェクトだということです。LLドライバライブラリでの生成も可能ですが、この場合は、初期設定ソースコードが自動生成されません。LLライブラリ利用の場合は、ユーザが初期設定コードも書く必要があります。APIを使った追記が必要です。HALとLLは、UM1749(全1466ページ)に詳しい説明があります。Layerとは、文字通りハードウエアを抽象化し、より簡単に周辺回路制御ができるAPIをユーザ側へ提供します。Layerは、速度優先でエキスパート向けのAPIですので、高速ですが移植性や可読性はHALよりも低くなります。HALとLLのAPIを相対比較した表が下記です。Comparison追記コードはHALの方が少なくても、実際はHALの方が抽象化オーバーヘッドの分だけコンパイル後のコードサイズは大きくなります。プログラムにもよりますが、その差は60~80%だそうです。LLを使うとこのサイズが小さい分だけ高速処理が可能ということです。STM32CubeMXでLLを使って生成するプロジェクトファイルは、本当の意味でフレームワークのみです。Peripheralウイザード設定の目的は、SW4STM32のAPI入力支援機能を活用するためです。APIも下記のように同様)。StudioのIntellisence機能のマイコン版に相当します。ENDこのIntellisenceが表示するAPIは、当該周辺回路の全てのAPIを示すと思います。Middlewareウイザードの設定意味が解っている必要があるでしょう。ENDまでのコメント間に記述します。CS+のコード生成と同じです。使用するドライバライブラリは、60~80%の高速性か、ポータビリティかの選択です。STM32マイコンは、ROM/RAMが大容量なこと、コア速度も速いこと、STM32CubeMXもデフォルトでHAL使用することから、STM32マイコンテンプレート開発にも、HALライブラリを使います。これにより、当初の目的であった機種特定を避けCortex-M0/M0+コアのSTM32F0/L0や、Cortex-M3のSTM32F1などのSTM32マイコン全てに使えるベアメタルマイコンテンプレートを開発します。*ここまでが、STM32CubeMXコード生成の使い方です。使用ライブラリにHALを選べば、初期設定Cソースコード付きのSW4STM32プロジェクトが作れます。ビデオや各種資料もここで終わるものが多いのですが、ソースにユーザ処理の追加が残っています。このユーザ処理の参考にすべきなのが、STM32CubeMXのRepositoryフォルダで提供される周辺回路毎のサンプルソフトです。前回記事Figure4に示したExampleで提供されるのが、HALライブラリ使用のサンプルソフトです。Example_LLはLLライブラリ利用サンプル、Example_MIXは、HALとLLの混合サンプルを示します。いずれのサンプルも、4IDEで使える構成になっているのは、前回記事の通りです。サンプルソフトがSTM32CubeMXを使って作られたものなら、そのまま利用できるのでBestですが、残念ながら専門家、人が開発したプロジェクトです。有力なサンプルであることに違いはありません。従って、使う周辺回路が決まったら先ずこのExampleで使用例を大体でも知ったうえで、コード生成するのが本来のSTM32CubeMXの使い方手順だと思います。Middlewareの3ウイザードを正しく設定できれば別ですが、分厚いマニュアルを読むよりは効率的だと思います。まとめ私は、STM32CubeMXは、コード生成とRepository内のサンプルソフトの両方を、車の両輪のように同時に使うことでSTM32マイコンのソフト開発が早く効率的になると思います。効率的なSTM32CubeMXの使い方は以下です。BEGIN~ENDの間に追記し、デバッグ4)再度コード生成しても3)で追記したユーザ処理は残る(但し、ヘッダーファイルは完全に上書きされるので注意)STM32マイコンテンプレートは、STM32CubeMXのHALドライバを使い、MCUコア依存性が少ないベアメタルテンプレート開発にする方針を立てました。STM32マイコンテンプレートの目的を知りたい方は、弊社マイコンテンプレートサイトをご覧ください。