STM32CubeIDEでSTM32F4Discoveryのデモプロジェクトをビルドする
はじめに
この記事はSTM32CubeIDEでSTM32F4DiscoveyのDemonstrationsプロジェクトをビルドするための備忘録です。作業の勢いで書いているので間違っている部分もあるかもしれません。参考程度にしてください。STM32F4Discoveryは、STM32F407というマイコンの評価ボードです(秋月電子での発売日が2011年なので少し古めです)。そしてSTM32CubeIDEはSTマイクロエレクトロニクスが2019年5月に発表したSTM32向けのIDEになります。
環境
- OS
- Windows 10
- STM32CubeIDE
- 1.4.2
- STM32F4Discovery
- MB997C (PCB revision C)
- Project
- Demonstrations
デモプロジェクトの作成
STM32CubeIDEを開き、File > New > STM32 Projectと選択すると、STM32 Projectの別ウインドウが開きます。このウインドウからExample Selectorタブを選択し、左側のExample FilterからでSTM32F4DiscoveryのExampleを絞り込んでいきます。絞り込めたらDemonstrationsを選択しNextをクリックしてプロジェクトを作成していきます。
ビルド(失敗)
Demonstrationsプロジェクトをビルドしてみましょう。Project > Build allを選択もしくはCtrl-Bでビルドします。
make: *** No rule to make target 'C:/Users/***/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c', needed by 'Middlewares/STM32_USBD_Library/Core/usbd_core.o'. Stop. "make all" terminated with exit code 2. Build might be incomplete.
はい。失敗しました。usbd_core.cが無いようです。
原因
Project Explorerで確認すると当該ファイル名はIDEには登録はされていますがファイル自体が存在していないようです。ファイルをダブルクリックで開いてみるとFile not foundと表示されます。Workspaceを直接エクスプローラで覗いてみてもファイルはありませんでした。DemonstrationsをSTM32CubeIDEのプロジェクトにコンバートした時に発生したバグでしょうか。
対処法
ライブラリのダウンロード
不足しているファイルを補います。具体的にはSTMicroがGitHubにあげているSTM32CubeF4リポジトリからダウンロードしてきます。
github.com
上記のSTM32CubeF4ライブラリをcloneもしくはDownload zipしてローカルに保存しておきます。
ファイルのコピー
ダウンロードしたライブラリから不足しているファイルを探して手動でコピーします。Project Explorerに不足ファイルをドラッグアンドドロップするとコピーできます。ファイルを上書きする旨を確認するダイアログが出たらOverwriteもしくはOverwrite allを選択してください。workspaceにファイルを直接コピーするのは止めた方が良いです。STM32CubeIDE(というかeclipse)がおかしくなります。
私の場合はMiddlewaresとBSPディレクトリ以下のファイルが不足していたので手動でコピーしました。ざっと見て不足しているファイルが無くなったらビルドをしてみましょう。
えいっ。
あっ…。
ライブラリとインクルードパスの修正
加速度センサのヘッダファイルが存在しないみたいです。先ほどダウンロードしたライブラリから追加します。エラー表示に従いlis302dl.hとlis3dsh.hを、lis302dl.cとlis3dsh.cと同じディレクトリにコピーします。確認ダイアログが出た場合はCopy filesを選択してみてください。
再ビルドします。えいっ。
../Dirvers/Components/lis302dl.h:48:10: fatal error: ../Common/accelero.h No such file or directory #include "../Common/accelero.h" ^~~~~~~~~~~~~~~~~~~~~ compilation terminated.
……。共通ライブラリが無いみたいです。ダウンロードしたライブラリから./Common/以下を探してドラッグアンドドロップで丸ごとコピーします。
再々ビルドします。えいっ。
Finished building target: Demonstrations.elf arm-none-eabi-size Demonstrations.elf text data bss dec hex filename 18120 568 3888 22576 5830 Demonstrations.elf Finished building: default.size.stdout arm-none-eabi-objdump -h -S Demonstrations.elf > "Demonstrations.list" Finished building: Demonstrations.list arm-none-eabi-objcopy -O binary Demonstrations.elf "Demonstrations.bin" Finished building: Demonstrations.bin 17:22:17 Build Finished. 0 errors, 0 warnings. (took 6s.197ms)
やっとビルドが通りました。良かったですね。成果物をSTM32F4Discoveryに焼いてみて確認してみましょう。評価ボードとPCをMicroUSBで接続すれば加速度マウスになります。