1、 STM32F103 12-15 元左右本文将以一个实例来介绍如何使用 STM32 提供的 DSP 库函数进行 FFT。1.FFT 运算效率使用 STM32 官方提供的 DSP 库进行 FFT,虽然在使用上有些不灵活(因为它是基 4 的 FFT,所以 FFT 的点数必须是 4n),但其执行效率确实非常高效,看图 1 所示的 FFT 运算效率测试数据便可见一斑。该数据来自STM32 DSP 库使用文档。图 1 FFT 运算效率测试数据由图 1 可见,在 STM32F10x 系列处理器上,如果使用 72M 的系统主频,进行 64 点的 FFT 运算,仅仅需要 0.078ms 而已。如果是进行 10
2、24 点的 FFT 运算,也才需要 2.138ms。2.如何使用 STM32 提供的 DSP 库函数2.1 下载 STM32 的 DSP 库大家可以从网上搜索下载得到 STM32 的 DSP 库,这里提供一个下载的地址:https:/ float fx;13 for(i=0; i 16;16 lY = (lBufOutArrayi 16);17 X = NPT * (float)lX) / 32768;18 Y = NPT * (float)lY) / 32768;19 Mag = sqrt(X * X + Y * Y) / NPT;20 if(i = 0)21 lBufMagArrayi =
3、 (unsigned long)(Mag * 32768);22 else23 lBufMagArrayi = (unsigned long)(Mag * 65536);24 25 其中,数组 lBufMagArray 存储了各次谐波的幅值。2.6 实验结果通过串口,我们可以将 lBufMagArray 数组中各次谐波的幅值(即各个频率分量的幅值)输出打印出来,具体实验数据如下所示:View Code在以上的实验数据中,我们分别打印出来了点数、频率、幅值、实部、虚部信息。由以上的实验数据,我们可以看出,在频率为 350Hz,8400Hz 和 18725Hz时,幅值出现峰值,分别为 1492、2696 和 3996,这与我们所预期的结果正好相符,从而验证了实验结果的正确性。