(2020.4.28 作成)
1年ほど前にCubeIDEについて紹介したのですが、STマイクロさんのコード作成支援ソフトCubeMXとの結合がとても強く、自由にプログラムを作成することが困難です。
私としてはCuebeMXはコードの再利用性、可読性がとても低いため出来れば使いたくありません(私はこちらで紹介している自作ライブラリを使用しています)。
これまではCubeIDEにCubeMXを使用せず使う方法が分からなかったため、SW4STM32を使用していましたが、CubeIDE登場後1年たったので再挑戦したところうまく動きましたので紹介したいと思います。
ということでこのページの目的は
CubeMXを使用せずCubeIDEを使用する
です。ただ以下見ていただければわかりますようにとても面倒です。もしよいやり方をご存知の方がおられれば教えてください。
では手順を見ていきましょう。
まずはプロジェクトの新規作成を行います。この際CubeMXを使用しないためTarget projectはEmptyを選びます。
管理人の場合はC++を使用するので、すぐにプロジェクトのmain.cをmain.cppにリネームします。
プロジェクトに必要なライブラリを右クリックしながらプロジェクトツリーにドロップします。すると右のようなウィンドウが出てくるので、コピーかリンクを選びます。私の場合は常にLinkを選んでいます。
追加するライブラリですが、プログラムのコンパイルするためにHALドライバをを追加する必要があります。
Windowsを使用している管理人の場合は以下のフォルダになります。C:\Users\UserName\STM32Cube\Repository\STM32Cube_FW_F1_V1.8.0/Drivers
また同時に必要なライブラリ(例えば管理人の場合はこちら)もリンクします。
プロジェクトのフォルダを右クリックしてProperties -> c/c++ General -> Path and Symbolsを選びInclude pathを追加します。この際環境変数を利用すると設定が次から使いまわせるので、お勧めです。
追加する内容は以下のようなものになります。
/${ProjName}/Drivers/CMSIS/Core/Include
/${ProjName}/Drivers/CMSIS/Device/ST/STM32F1xx
/${ProjName}/Drivers/CMSIS/Device/ST/STM32F1xx/Include
/${ProjName}/Drivers/STM32F1xx_HAL_Driver/Inc
当然HALドライバ以外に追加したフォルダがあればそれも必要です。追加する際はAdd to all configurationsと Add to all languagesにチェックを入れます。
次にSymbolsタブを開き、必要なものを追加します。STM32F103C8T6基板の場合だと
STM32, STM32F1, STM32F103CBTx, STM32F103xB, USE_HAL_DRIVER, USE_FULL_LL_DRIVER
です。また、DEBUGコンフィギュレーションにはDEBUGも必要です。
Source Locationタブを開き、以下のフォルダと追加したライブラリのソースフォルダを追加します。
Drivers/CMSIS/Device/ST/STM32F1xx/Source
Drivers/STM32F1xx_HAL_Driver/Src
/Drivers/STM32F1xx_HAL_Driver/Incにあるstm32f1xx_hal_conf_template.hをIncフォルダにコピーしてstm32f1xx_hal_conf.hにリネームします。
コンパイルを行うとエラーを発生させる以下のファイル/フォルダをコンパイル対象から外します。削除しても良いと思うのですが、該当ファイルのプロパティページから"Exclude resource from build"を選ぶとコンパイル対象から外せます。対象となるファイルは以下のものです。
〇/Drivers/STM32F1xx_HAL_Driver/Srcの
stm32f1xx_hal_timebase_rtc_alarm_template.c
stm32f1xx_hal_timebase_tim_template.c
〇/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templatesの
arm, iar, gccフォルダ
です。
ここまで設定すれば後は普通に使えると思います。好きなようにプログラムを作成し、ビルド/デバッグ実行を行ってください。
どうでしょうか?かなり面倒ですし、プロジェクト作成毎に設定しなければならないので大変ですがCubeMXを使用しないので管理人的にはこちらの方が好みです。
これまでSW4STM32を使用していましたが、ここ1年更新もされていないようなのでSTマイクロさん謹製のCubeIDEに乗り換えようかと思います。