1. 前言
我們知道很多的 STM32 系列 MCU 都支持 DSP 指令和浮點單元(FPU),過去使用標準庫添加 DSP 的運算庫的例子有很多,但相對較繁瑣,需要下載並根據 MCU 的大小端和是否使用浮點,手動選擇添加庫文件。本文旨在介紹如何通過 STM32CubeMX 工具進行配置,自動將 DSP庫添加到工程中,以及如何對工程進行配置。本文基於 STM32G474 進行介紹。
2. 配置過程
1. 如果沒有安裝過本插件,需要在 Software Packs->Manage Software Packs 中安裝 XCUBE-ALGOBUILD 插件,插件提供了多個代碼示例,涵蓋了數字信號處理、運動控制、傳感器數據處理等領域的算法。

2. 通過 Software Packs->Select Componests 選擇使用的 DSP 庫的版本。

3. 使能 DSP Library。

4. 添加完畢即可生成工程。
5. 在生成的工程中,可以看到已經根據硬體實際的內核類型、大小端、是否支持浮點運算單元,自動將相應的 DSP 庫文件添加到了工程中。其中 cortexM4 代表 M4 內核,‘l’代表小端 Little endian,如果是‘b’則代表大端 Big endian。最後的‘f’代表是浮點運算單元 Floating Point Unit,如果沒有這個位域的符號則代表不支持浮點單元,在 M7核中,浮點單元又分為單精度和雙精度,分別用‘fdp’表示雙精度浮點 Double Precision Floating Point,用‘fsp’表示單精度浮點 Single Precision Floating Point。

6. 使用了硬體浮點運算單元,檢查一下相關的宏是否已啟用,通過 CubeMX 生成的工程大多默認啟用了相關宏,如果未啟用,可通過編譯器選項或代碼定義。
#define __FPU_PRESENT 1U
#define __FPU_USED 1U
3. 驗證
在要調用 arm 的 DSP 庫函數的文件中包含頭文件 #include "arm_math.h"後,即可通過調用 arm_sin_f32、arm_cos_f32 等函數進行功能及效率的驗證。在生成的工程中,也可以在\Drivers\CMSIS\DSP\Examples\ARM 目錄下找到測試例程。
4. 總結
通過 CubeMX 來添加 DSP 庫,使其操作更加便捷,關鍵在於知道如何添加組件以及如何調用庫相關函數。
評論