之前想玩一下FPU 可惜那個DSP庫看不懂 也找不到教程我研究了2個晚上總算會用那個FFT了....
我的環(huán)境是 IAR 6.2
板子是STM32F4DISCOVERY
第一 首先下載官方的 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0沒有的同學(xué)請自己去官網(wǎng)下一個
DSP庫在 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0LibrariesCMSIS
然后我們使用IAR建立工作空間 這個教程到處都有 我就不說了
在編譯器里面加入
$PROJ_DIR$......LibrariesCMSISDSP_LibSource
_MATH_CM4
_MATH_MATRIX_CHECK
_MATH_ROUNDING
__FPU_PRESENT
__FPU_USED
這樣才可以使用DSP庫
注意 我的是IAR MDK貌似不是這樣的 .....
然后再編譯器里面打開 FPU
恩 然后再你的EW 目錄下添加官方的例子文件
恩 我們用的就是這幾個文件 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0LibrariesCMSISDSP_LibExamplesarm_fft_bin_example
沒有那么容易完了 接著
添加啊 ...................終于添加完了 然后在IAR里面加入 arm_fft_bin_example_f32 這個就是官方的例子和官方的數(shù)據(jù) arm_fft_bin_data
然后終于可以編譯了 連接下載
使用WATCH窗口可以看見值
然后 我講一下這幾個函數(shù)的作用
/* Initialize the CFFT/CIFFT module */
status = arm_cfft_radix4_init_f32(&S, fftSize,
ifftFlag, doBitReverse); //這里是FFT的初始化
/* Process the data through the CFFT/CIFFT module */ //FFT計算的函數(shù) 注意testInput_f32_10khz 這個數(shù)組 不能是const 因為計算值是覆蓋在這里面的
arm_cfft_radix4_f32(&S, testInput_f32_10khz);
/* Process the data through the Complex Magnitude Module for // FFT出來的是復(fù)數(shù)這里是把復(fù)數(shù)求模 得幅值
calculating the magnitude at each bin */
arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,
fftSize);
/* Calculates maxValue and returns corresponding BIN value */ //這里是求FFT出來數(shù)據(jù)模的最大值
arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
最后 如果你的運行到這一步 你就成功了
哈哈哈