1. 程式人生 > >STM32F4-浮點DSP庫的MDK開發環境的設定

STM32F4-浮點DSP庫的MDK開發環境的設定

步驟如下:

1 . 建立工程,新增相關必要的檔案到工程中。

 

2. 開啟 option for target 選擇 Target 標籤,在code generatio中,將floating point hardware 選擇 USE FPU。

 

3.  編譯你的工程,保證通過。當然也不一定需要編譯通過,先做編譯是為了後面新增浮點庫做準備,這樣發現問題和知道哪裡出問題。

 

4.  開啟 option for target 選擇 C/C++ 標籤, 在define中新增:USE_HAL_DRIVER,STM32F407xx,__TARGET_FPU_VFP,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING,ARM_MATH_CM4,__CC_ARM,由於我的是HAL的庫,所以前面有USE_HAL_DRIVER的全域性巨集定義,如果你用的不是HAL庫,而是使用韌體庫的話,一般會有韌體庫的一個全域性巨集定義USE_STDPERIPH_DRIVER和STM32F4XXxx在裡面,這在韌體庫中的例子工程中都會有這個的。所以,我這裡只需要新增

__TARGET_FPU_VFP,

ARM_MATH_MATRIX_CHECK,

ARM_MATH_ROUNDING,

ARM_MATH_CM4,

__CC_ARM

注意中間用英文逗號分開。其中ARM_MATH_MATRIX_CHECK是庫函式的引數檢查開關,這裡新增後,就開啟。ARM_MATH_ROUNDING這個是庫函式在運算是是否開啟四捨五入的功能,我這裡新增,可以根據自己的需要進行配置。ARM_MATH_CM4這個就非常重要,必須要配置進去,否則在編譯之後,會預設使用math.h的庫函式,而不會用到硬體的FPU的。__CC_ARM是不同編譯器的編譯配置巨集定義,__CC_ARM就是代表MDK開發環境。

 

5.  開啟工程中的 stm32f407xx.h 檔案,注意不是 stm32f4xx.h 檔案,是和你的晶片型號對應的標頭檔案,比如我用的是STM32F407,所以我這裡就選擇開啟stm32f407xx.h檔案,找到     

#define __FPU_PRESENT            0       /*!< FPU present       這一句,將設定為 1

找到

#include "core_cm4.h"             /* Cortex-M4 processor and core peripherals */

#include "system_stm32f4xx.h"

#include <stdint.h>

這個地方,然後在下面新增 

#include "arm_math.h"

然後儲存。

 

6. 新增浮點庫檔案到工程。

如果用的是 uv4,開啟 C:\Keil\ARM\CMSIS\Lib\ARM 目錄,複製“arm_cortexM4lf_math.lib”檔案到你的工程下,並加入工程。

如果用的是 uv5,開啟 C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Lib\ARM 目錄,複製“arm_cortexM4lf_math.lib”檔案到你的工程下,並加入工程。

再或者在官方下載韌體庫程式包中複製也行,  \STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Lib\ARM

這是新增lib庫檔案,也可以新增原始碼庫檔案, \STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\DSP_Lib\Source

lib檔案,不參與編譯,只參與連結定位,所以編譯速度快,但是有點佔空間。根據自己的情況而定。

 

7.  準備工作完成了,進行編譯,如果不出錯,則基本上沒有什麼問題了,自己可以寫一段測試程式碼試一試。

 

8.  浮點庫的函式用法和說明,可以看看 stm32f4xx_dsp_stdperiph_lib_um.chm 檔案。 或者直接開啟

 

C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Documentation\DSP\html下面的  index.html 檔案,通過瀏覽器看幫助檔案。