STM32でCMSIS-DSP使うの簡単かと思ったけど結構手間取ったので記録、FFT処理とかはCMSIS-DSP使うのが一番お手軽と思ったけどね、ラズピコでも使ったけどラズピコの方が構築は簡単、依存関係がないから
<環境>
・STM32CubeIDE 1.19
・STM32F401re(Nucleoボード)
・M4 MacBook Tahoe
<手順>
やる事を突き詰めれば必要なCore/DSPのディレクトリを持ってきてパスに追加するということ
1. 新規プロジェクト作成
File → New → STM32 Project
MCU/Board Selector でターゲット MCU を選択
例:STM32F401RE
プロジェクト名を入力
Finish
2. 必要な CMSIS-Core / DSP を準備
2.1 CubeF4 パッケージの場所確認
~/STM32Cube/Repository/STM32Cube_FW_F4_Vx.xx.x/
存在を確認するディレクトリ:
Drivers/CMSIS/Core/Include
Drivers/CMSIS/Device/ST/STM32F4xx/Include
Drivers/CMSIS/DSP/Include
2.2 個別のプロジェクトにコピーする
元ディレクトリとコピー先
Drivers/CMSIS/Core/Include <Project>/Drivers/CMSIS/Core/Include
Drivers/CMSIS/Device/ST/STM32F4xx/Include <Project>/Drivers/CMSIS/Device/ST/STM32F4xx/Include
Drivers/CMSIS/DSP/Include <Project>/Drivers/CMSIS/DSP/Include
STM32CubeIDE では
CMSIS-DSP の主要関数は静的ライブラリ(.a)として提供されている
👉 arm_math.h(宣言)+ .a(実装)で利用が成立している、arm_math.cという巨大ファイルが以前のCubeIDEのバージョンではあったらしいけど今はない、標準以外が必要になるならもってきて追加する
・元ディレクトリ構造
3. 不要なファイルの除外
3.1 除外対象— 存在しない機能を使ったコードなので、とりあえずbuild対象から除外しないと全体buildできない
Drivers/CMSIS/DSP/Examples/
Drivers/CMSIS/Core/Template/
Drivers/CMSIS/DSP/ComputeLibrary/
SupportFunctions 内の 不要な .c
3.2 除外方法
フォルダ or 複数ファイル選択
右クリック → Resource Config → Exclude from Build
Debug / Release 両方 にチェック
4. インクルードパス設定
<Project>/Drivers/CMSIS/Core/Include
<Project>/Drivers/CMSIS/Device/ST/STM32F4xx/Include
<Project>/Drivers/CMSIS/DSP/Include
Properties → C/C++ General → Paths and Symbols
Language = GNU C
Debug / Release 共通
5. ビルド
Clean → Build
#include “arm_math.h” が解決される
arm_mult_f32() / arm_rfft_fast_f32() などの基本機能は 追加なしで使用可能
👉 実体は libarm_cortexM4lf_math.a に存在するから
6. 最終ディレクトリ構成
<Project>
Drivers/
CMSIS/
Core/Include/
Device/ST/STM32F4xx/Include/
DSP/Include/
DSP/Source/SupportFunctions/(いずれ必要な場合のみ)
Src/
Inc/
・CubeIDEのディレクトリ
斜線入りはそのディレクトリを右クリックでResouce ConfigulationsでExclude from Buildでbuild対象外にしているディレクトリ

admin

