在stm32f407搭配System Workbench for STM32(以下簡稱SW)開發dsp程式的程式庫設定
從STM32065這裡可以拿到stm32出的dsp程式
https://www.st.com/en/embedded-software/stsw-stm32065.html
但是在SW裡面開發時需要設定一些地方
首先看看STM32065裡面有什麼
下載並解開後的資料夾名稱(版本1.8)
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
裡面有個Lib資料夾,裡面有DSP相關標頭檔以及程式庫,以下標示程式庫所在位置,我們需要的是GCC版本,將整個Lib資料夾拉到專案的Drivers/CMSIS資料夾裡面
再來找到標頭檔(.h)所在位置,將這幾個拉到專案的Drivers/CMSIS/Include資料夾裡面
補充:在刷新cubeMX的時候這裡面的.h會被刷新,新加入的.h會消失需要重新拉入,目前正在找新的資料夾位置
目前SW專案資料夾會多上面這兩個
接著打開專案設定,點選Libraries設定(-l)新增arm_cortexM4lf_math,設定(-L)新增程式庫所在路徑,這裡示範的程式庫是放在專案的相對位置:Drivers/CMSIS/Lib/GCC
至於include的部份因為我們放的是已經存在專案中的include資料夾,因此在專案設定方面無需更動。
最後加入ARM_MATH_CM4的巨定義以便讓前置處理器能夠開通標頭檔中相對應的巨集設定
然後就可以在程式中呼叫相關DSP 的API
記得引入相對應標頭檔:
#include <arm_math.h>
arm_sin_f32(2*PI*10*i/Fs)
arm_cfft_radix4_init_f32(&Base4fft,Length,0,1);
arm_cfft_radix4_f32(&Base4fft,Inputdata);
arm_cmplx_mag_f32(Inputdata,Outputdata,Length);
參考資料:
CFLAGS += -I$(CMSISPATH)/CMSIS/DSP/Include
LDFLAGS += -L$(CMSISPATH)/CMSIS/Lib/GCC/ -larm_cortexM4lf_math
出處:https://stackoverflow.com/questions/49237484/stm32f-discovery-undefined-reference-to-arm-sin-f32