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 檔案,通過瀏覽器看幫助檔案。