目錄
步驟 1:準備工作
步驟 2:創建 Keil 項目,并配置工程
步驟 3:在MDK工程上添加?CMSIS-DSP 庫
步驟 5:編寫代碼
步驟 6:配置時鐘和優化
步驟 7:調試與驗證
步驟 8:優化和調整
注意事項:
在 STM32L071KZT6 上使用 MDK(Keil uVision)移植 DSP 庫源碼,并且基于 HAL 庫進行開發,可以按照以下步驟進行操作:
步驟 1:準備工作
- 安裝 Keil MDK:。
- 安裝 STM32CubeMX:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?參考博客:STM32開發,安裝代碼生成工具CubeMX_stm32cubemxzip-CSDN博客
-
下載 DSP 庫源碼:
從 STMicroelectronics 官網或者 ARM 官方下載 CMSIS-DSP 庫源碼。這個庫包括了許多數學運算、濾波器、FFT等功能,并且專為 ARM Cortex-M 系列微控制器優化。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注意:MDK 請使用 5.26 及其以上版本,CMSIS 軟件包請使用 5.6.0 及其以上版本。? ? ? ?
?安裝了新版 MDK 后,CMSIS 軟件包會存在于路徑:D:\keil\Arm\Packs\ARM\CMSIS\5.9.0
打開固件庫的CMSIS庫,可以看看到下面的列表:
其中 DSP 文件夾是我們需要的:
關于DSP 文件夾的介紹見博客:
步驟 2:創建 Keil 項目,并配置工程
參考博客CubeMX配置STM32L071KZT6
步驟 3:在MDK工程上添加?CMSIS-DSP 庫
- 添加DSP文件夾,用于放置DSP庫:CMSIS/DSP:
- 導入 CMSIS-DSP 庫:
- 在 Keil 項目中,右鍵點擊 "CMSIS/DSP",選擇 "Add Existing Files" 并添加 CMSIS-DSP 庫中。
- 進入以下路徑(工程路徑下):C:\Users\FCZ\Desktop\design\Fluxgate_code\Drivers\CMSIS\Lib\ARM,添加DSP庫:
l 表示小端格式,b 表示大端格式,Cortex-M0+ 處理器本身是小端架構,因此應該使用小端模式,否則會報錯。
- 配置宏定義:在 Keil 項目的 "Options for Target" 設置中,確保配置了正確的宏定義。對于 ARM Cortex-M0+ 內核,可能需要配置某些優化選項,如啟用硬件除法(如果有)或選擇定點運算模式。
????????打開 Keil MDK,選擇你的項目。
????????右鍵點擊項目,選擇 "Options for Target"。
????????在彈出的窗口中,選擇 "C/C++" 選項卡。
????????在 "Preprocessor Symbols" 中添加以下宏定義:ARM_MATH_CM0PLUS
? ? 4.添加頭文件
????????添加文件路徑:..\Drivers\CMSIS\DSP\Include
????????用到 DSP 庫函數的文件得添加#include "arm_math.h"就可以調用 DSP 庫的 API 了。至此就完成了 DSP 庫的移植。
步驟 5:編寫代碼
- 初始化 HAL 庫:在
main.c
中,初始化 HAL 庫和外設。 示例:#include "stm32l0xx_hal.h" #include "arm_math.h"void HAL_Init(void); void SystemClock_Config(void); void MX_GPIO_Init(void);float32_t pSrc = -12; float32_t pDst;int main(void) {// 初始化 HAL 庫HAL_Init();SystemClock_Config();MX_GPIO_Init();// 初始化 DSP 庫DSP_Init();while (1){// 調用 DSP 函數arm_abs_f32(&pSrc, &pDst, 1);} }
步驟 6:配置時鐘和優化
- 時鐘配置:確保系統時鐘設置符合 DSP 庫的要求,特別是在處理大型數據時,時鐘的速度會影響 DSP 的性能。
- 優化設置:可以在 Keil 的項目設置中啟用優化選項,啟用硬件加速指令(如果處理器支持),以及通過定點運算(如果你不需要浮點計算)來提高性能。
步驟 7:調試與驗證
- 編譯代碼:在 Keil 中點擊 "Build" 編譯項目,確保沒有錯誤。
- 下載并調試程序:將程序下載到 STM32L071KZT6 開發板,使用 Keil 的調試工具調試代碼,查看 DSP 運算結果。
- 驗證 DSP 運算結果:檢查 DSP 運算的輸出,確保它們符合預期。如果需要,可以在調試過程中設置斷點,單步執行并查看數據。
步驟 8:優化和調整
- 性能優化:對于較大數據量的 DSP 運算,可以考慮啟用硬件浮點單元(如果芯片支持)或使用定點計算來優化性能。
- 內存優化:根據需要,優化內存的使用,避免不必要的內存占用,尤其是在資源受限的情況下。
注意事項:
- 硬件浮點支持:STM32L071KZT6 基于 Cortex-M0+ 內核,不支持硬件浮點單元,因此要么使用軟件浮點運算,要么使用定點運算來優化性能。
- 定點運算優化:如果不使用浮點計算,CMSIS-DSP 庫也支持定點運算,可以在庫初始化時配置定點模式。
- 庫版本兼容性:確保所使用的 CMSIS-DSP 庫版本與 Keil MDK 以及 STM32L071 相兼容。