纪国圣 发表于 2021-1-31 12:58

【AT-START-F407测评】+ FFT效率测试


抽空对240MHz运行的AT32F407VG做1024点FFT。DSP使用CMSIS DSP的arm_cortexM4lf_math.lib。无任何优化。通过TMR1对其运行时间测量,得到运行时间为589us。注意,使用优化会造成时间测量错误。

这里不得不吐槽一下,为什么在定时器配置中已经通过TMR_ClearITPendingBit(TMR1,TMR_FLAG_Update);清除中断标志位,可还是会进入一次中断。
下图为STM32F407做FFT的效率:




aple0807 发表于 2021-1-31 13:32

中断重入的问题之前遇到过,退出中断前加 __DSB();可以解决,M4的流水线特性导致的。

muyichuan2012 发表于 2021-2-1 09:36

请问 “下图为STM32F407做FFT的效率:”      具体是描述AT32F407还是STM32F407?

纪国圣 发表于 2021-2-1 15:42

muyichuan2012 发表于 2021-2-1 09:36
请问 “下图为STM32F407做FFT的效率:”      具体是描述AT32F407还是STM32F407?

下图指的是STM32F103和STM32F407使用ST官方的FFT算法运行时间测量结果。

纪国圣 发表于 2021-2-1 22:08

这里更正一下。由于在配置TMR1时,分频系数应该是239,结果写成239-1,即238,则TMR1的时间分辨率为1.004us,则实际运行时间为591us。特此更正说明。

fcccc 发表于 2021-2-2 16:11

本帖最后由 fcccc 于 2021-2-2 16:12 编辑

比STM407慢这么多没理由啊他们才168Mhz.

纪国圣 发表于 2021-2-2 16:59

fcccc 发表于 2021-2-2 16:11
比STM407慢这么多没理由啊他们才168Mhz.

ST使用的是专门优化过的DSP库,所以看起来数据很漂亮。我这个使用的是ARM推出的CMSIS DSP,应该没有优化,并且这个测试程序为了能正常测量出数据,也没有开优化(-O0)。
页: [1]
查看完整版本: 【AT-START-F407测评】+ FFT效率测试