概要
- stm系(Nucleo)のマイコンでファームウェアを開発する
- HAL_DriverとCubeMXでハードウェアの知識が少なくてもなんとなく開発できる
- CubeMXでHAL_Driverの雛形プロジェクトを生成して開発を開始するところまで
環境
- System Workbench for STM32 AC6
- CubeMX
- Ubuntu (Mac OSX Sierra)
実際、仕事で開発しているときはUbuntuでやってますが、
これを書いてるのはMacなのでスクリーンショットはMacです。
ちなみにMacでCubeMXをインストールする際、
普通にダウンロードしたインストーラは動かなかったので下記手順でインストーラを起動しました。
$ cd [ダウンロードパス]
$ cd SetupSTM32CubeMX-4.19.0.app/Contents/MacOs
$ chmod 777 SetupSTM32CubeMX-4_19_0_macos
$ ./SetupSTM32CubeMX-4_19_0_macos
HAL_Driverについて
これを読むとなんのことかよく分からないけどファームウェア開発のフレームワークみたいなもので、CubeMXを使って生成したプロジェクトをimportして使うことで
ペリフェラルの設定や初期化のコードを記述したソースコードが生成されるのですぐに開発を進めることができます。
プロジェクトの生成
- CubeMXをつかって* System Workbench for STM32 AC6のプロジェクトを生成します
- NewProjectをクリック
- 使用するボードを選択、または作成するマイコンに合わせた設定を選択
- ペリフェラルの設定画面が表示されます
- この画面でピンの設定などマイコンの設定をします
- ピンの設定や割り込みの設定などもここからできます
- メニューのProject -> Settingsからプロジェクトの設定を行います
- ProjectタブのToolChain / IDEでSW4STM32を選択します
- マイコンの設定が終わったらProject > Generate Codeでプロジェクトを生成します
生成したプロジェクトから開発を始める
- 基本的にはmain.cを修正して開発をすすめます。
- 生成したプロジェクトはそのままSystem Workbenchでimportすることができます。
- ビルドパスなどは既に各ディレクトリに通っていて、DriversのディレクトリにはHAL_Driverが含まれています。
- ペリフェラルの設定を変更したい場合はrootにあるiocファイルをCubeMXでロードして修正し、再度Generateすることで更新することができます。
- main.cなども上書きされるので何かしらの方法でバックアップは取っておいた方がいいです。
- CubeMXを使用して雛形を生成することで各ボードに合わせたHAL_Driverやペリフェラルの初期化コードを含んだプロジェクトを生成してくれます。
- あとはmain.cを修正してファームウェアを開発します