你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H750 FFT 时间太长

[复制链接]
憨客鱼 提问时间:2025-12-3 13:03 / 未解决

我打算用STM32H750开发一个案子,需要做FFT,我做了一个测试程序来测试FFT所消耗的时间,发现时间测试时间跟网上说的差异很大,不知道是那里出了问题

arm_cfft_radix4_instance_f32 g_rFFtPar; float32_t g_fInData1[FFT_DATA_LENTH2]; float32_t g_fInData2[FFT_DATA_LENTH2]; float32_t g_fInData3[FFT_DATA_LENTH*2];

float32_t g_fInPar[FFT_DATA_LENTH*4];

float32_t g_fOutData1[FFT_DATA_LENTH2]; float32_t g_fOutData2[FFT_DATA_LENTH2];

float32_t g_fPhase1; float32_t g_fPhase2; float32_t g_fPhase3;

attribute((section(".dtcm"))) float32_t g_fInData1[FFT_DATA_LENTH2]; attribute((section(".dtcm"))) float32_t g_fInData2[FFT_DATA_LENTH2]; attribute((section(".dtcm"))) float32_t g_fInData3[FFT_DATA_LENTH*2];

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);

k=0;

for(j=0;j<2;j++) { for(i=0;i<512;i++) { g_fInData1[k] = 2048sin((i3.14159)/256)+2048; if(g_fInData1[k]>=4096) { g_fInData1[k] = 4095; }

        g_fInData2[k] = 2048*sin((i*3.14159)/256+32*2*31.14159/256)+2048;
      if(g_fInData2[k]>=4096)
        {
            g_fInData2[k] = 4095;
        }
        k++;
        g_fInData1[k] = 0;
        g_fInData2[k] = 0;      
        k++;                
}

}

for(i=0;i<1024;i++) { if(g_fInData2[i2]>1024) { g_fInData3[i2] =g_fInData2[i2]; } else { g_fInData3[i2]=0; } g_fInData3[i*2+1]=0; }

arm_cfft_radix4_f32(&g_rFFtPar, g_fInData1);

g_fPhase1 = atan2f(g_fInData1[5],g_fInData1[4]); // arm_cmplx_mag_f32(g_fInData1, g_fInData1, FFT_DATA_LENTH); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); arm_cfft_radix4_f32(&g_rFFtPar, g_fInData2); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
// arm_cmplx_mag_f32(g_fInData2, g_fInData2, FFT_DATA_LENTH); g_fPhase2 = atan2f(g_fInData2[5],g_fInData2[4]);

arm_cfft_radix4_f32(&g_rFFtPar, g_fInData3); // arm_cmplx_mag_f32(g_fInData3, g_fInData3, FFT_DATA_LENTH); g_fPhase3 = atan2f(g_fInData3[5],g_fInData3[4]);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); HAL_Delay(100);

c0e8465b-28f2-4c25-abc8-8fbca5aae710.png

1394140c-30ac-40d7-ac03-7afe0c145798.png

测试下来 一个 arm_cfft_radix4_f32函数运行时间尽然要将近10mS 我CPU 主频设置的是 240MHZ

但是不知道是那里的问题,也使用了 DSP LIABARY

收藏 评论9 发布时间:2025-12-3 13:03

举报

9个回答
fafa1 回答时间:昨天 15:02

1、确认编译器真的开了 FPU Keil: Options → Target → Floating Point Hardware → Single Precision STM32CubeIDE: Project → Properties → C/C++ Build → Settings → MCU Settings → -mfpu=fpv5-sp-d16 -mfloat-abi=hard 再全清重新编译,map 文件里看到符号带 “vfp” 字样 才算数

2、确认运行时 FPU 使能 复位缺省 FPU 是 disable

憨客鱼 回答时间:昨天 16:14

另外,我开机的时候是做了 初始化的

arm_cfft_radix4_init_f32(&g_rFFtPar, FFT_DATA_LENTH,0,1);

憨客鱼 回答时间:昨天 16:21

fafa1 发表于 2025-12-3 15:02
1、确认编译器真的开了 FPU
Keil:
Options → Target → Floating Point Hardware → **Single Precisi ...

[md]Project → Properties → C/C++ Build → Settings → MCU Settings

请问这个是在那里啊

没找到啊

63b6f0b5-9121-4be1-a78a-c3aa1d6f9ad5.png

憨客鱼 回答时间:昨天 16:39

fafa1 发表于 2025-12-3 15:02
1、确认编译器真的开了 FPU
Keil:
Options → Target → Floating Point Hardware → **Single Precisi ...

[md]我看了MAP 文件

BuildAttributes

obj.o ABSOLUTE $$ THM_ISAv4$E$P$D$K$B$S$7EM$VFPv5_D16$PE$PLD8$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$IEEEX$EBA8$UX$STANDARDLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon

$$

好像有VFP

fafa1 回答时间:14 小时前

憨客鱼 发表于 2025-12-3 16:21
Project → Properties → C/C++ Build → Settings → MCU Settings</p>
<p>请问这个是在那里啊

[md]是 STM32CubeIDE,不是 STM32CubeMX😄

憨客鱼 回答时间:10 小时前

fafa1 发表于 2025-12-4 08:49
是  STM32CubeIDE,不是  STM32CubeMX😄

请问KEIL里怎么看啊,STM32CUBEIDE 实在不熟悉,刚才研究了半天还没摸透

fafa1 回答时间:8 小时前

憨客鱼 发表于 2025-12-4 13:15
请问KEIL里怎么看啊,STM32CUBEIDE 实在不熟悉,刚才研究了半天还没摸透
...

image.png

憨客鱼 回答时间:6 小时前

fafa1 发表于 2025-12-4 15:20
![image.png](data/attachment/forum/202512/04/152012rbrkonqoc9exfgqf.png?imageMogr2/auto-orient ...

[md]确认过了,配置是对的,但是时间还是 几mS,

是ST的时间就那么长,还是我那里不对呢

xmshao 回答时间:5 小时前

先不管多长时间,你比较下使能和不使能 硬件FPU的运行时间是否有明显差别。

如果有明显差别,可能你的计算量的确有点大。不过10ms的确有点漫长~~

我刚才使用ARM KEIL v6测试了,反正开启FPU单元跟不开启的耗时差别挺明显的。

image.png

你可以这样,不要理stm32cubemx这里启用DSP的操作,无视它。在KEIL这边再自行选择DSP,然后在main里包含arm_math.h即可使用了。比之前V5还方便。

image.png

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版