(2017.8.2 作成)
このページでは右の写真にあるSTM32F103C8T6基板を用いて"新規に"プロジェクトを作成する方法を紹介したいと思います。
基板自体の紹介については同(1)のページを参照ください。先のページでも触れていますが、ここではArduinoとして動かすのではなく安価なSTM32基板として使用することを前提としています。
またCubeMXを使用して最初のプロジェクトを作成し、それをベースに改変する場合は(たぶん)問題を起こさないので以下の情報を参考程度にしていただければと思います。
プログラムの作成にはSystem workbench for STM32がお勧めです。インストール等についてはこちらで紹介しているので合わせて見てみてください。
ただ一点違いとしては、この基板はSTマイクロさん製ではないので、初期に登録されていません。そこで一度新規に基板を登録する必要があります。
といってもチップを選ぶだけなので、あまり悩むことはないと思います。
プロジェクトの作成はあまり苦労はなかったのですが、System workbench(以下SW4STM32)の設定には苦労したので、ここで紹介したいと思います。なお今回使用したバージョンは2.1です。
SW4STM32を用いて新規プロジェクトを作成するとstartupというフォルダが作成され、その中にスタートアップスクリプト(startup_***.s)というファイルが置かれています。本来置かれるべきファイルはマイコンごとに異なっており、***にそれぞれのマイコンの型番が入っています。
しかしバージョン2.1の時点では汎用の"startup_stm32.s"というファイルが置かれているため正常に動きません。
そこでCubeMXなどで一度プロジェクトを作成し、このマイコン用のスタートアップスクリプト"startup_stm32f103xb.s"を入手して置き換えます。
プロジェクトを新規作成するとHALライブラリを格納したプロジェクトが同時に作成されていると思います。 例えば基板名称をstm32f103c8t6としていれば"stm32f103c8t6_hal_lib"というプロジェクトです。
このプロジェクトのSymbolがデフォルトだとSTM32F100になっているので、F103に変更します。
具体的にはプロジェクトを右クリックし、Property -> C/C+++ General -> Path and Symbols -> Symbolsで設定されている値でF100が含まれるものをF103に修正します。修正後の画像を載せているので参考にしてください。(クリックで拡大します)
F103C8T6基板の場合、乗っているROMサイズが64kBと小さいため入りきらないことがあります。このためコードサイズを小さくするため、Newlib-nanoを使用します。
今度はHALではなく作成するプロジェクトに対して右クリックし、Property -> C/C++Build -> Settings -> Tool Settingsタブ
-> MCU G++ Linker -> Miscellaneous -> Linker flagsに
"-specs=nano.specs"
を追加します。
出来上がりが右の画像です。
書き込み用に写真のような安価なST-Linkを使用する場合はDebug Configurationで"software system reset"を設定する必要があります。
詳しくはこちらを参照してください。
以上の設定で新規にSTM32F103C8T6基板を用いてSW4STM32の新規プロジェクトを使用できると思います。