STM32プロジェクトにCMSIS-DSPを導入する

CMSIS-DSPはSTM32のリポジトリに同梱されているのですが、なぜかCubeIDEからアプリケーションのスケルトンに追加することができません。以下にCubeIDE v1.3.0のプロジェクトで使用する方法をメモしておきます。

ファームウェアからCMSIS-DSPのコードをコピーする

CubeIDEはプロセッサ・コアごとのファームウェアをPC上に保存しています。CubeIDEのデフォルトは~/STM32Cube/Repositoryです。この中に対象プロセッサ・コアのファームウェアがありますので、そのCMSISサブディレクトリを丸ごとプロジェクトのDrivers/CMSISにコピーします。

DSPをプロジェクトのCMSISにコピー

不要なサブディレクトリを削除する

コピーしたDSPディレクトリの中から、不要なサブディレクトリを削除します。削除するのは以下の三つです。

  • DSP_Lib_Test_Suites
  • Examples
  • Projects
不要なディレクトリを消去

インクルード・ディレクトリを追加

追加したDSPディレクトリをインクルード・ファイルとしてプロジェクトに追加します。

  • Drivers/CMSIS/DSP/Include
インクルード・ディレクトリを追加

ARM_MATH_CMxを追加

CPUコアに応じてARM_MATH_CMxマクロをコンパイル時マクロとして追加します。STM32F722の場合はARM_MARTH_CM7です。正確なマクロ名を知りたいときにはDrivers/CMSIS/DSP/Include/arm_math.hを開き、”ARM_MATH_CM”を検索してください。ifdefによりインクルードファイルを読み込んでいる部分があります。ここを参考に適切なマクロを選びます。

マクロを追加する場合は、すべてのコンフィギュレーションとすべての言語に追加します(下図)

ARM_MATH_CM7を追加

__FPU_PRESENTを追加

FPUありの製品では、同様に__FPU_PRESENTをコンパイル時マクロとして追加します。

マクロを追加する場合は、すべてのコンフィギュレーションとすべての言語に追加します(下図)

__FPU_PRESENTを追加

以上で設定は終わりです。関数を使用する場合はソースファイルでarm_math.hをインクルードします。

#include "arm_math.h"

これでプログラム中でCMSIS-DSPの関数を使うことができます。

float a = arm_sin_f32(3.14f);

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください