硬汉嵌入式论坛

 找回密码
 立即注册
查看: 278|回复: 3
收起左侧

[STM32CubeF4] STM32F407的FPU性能

[复制链接]

4

主题

7

回帖

19

积分

新手上路

积分
19
发表于 2026-1-27 09:14:38 | 显示全部楼层 |阅读模式
请教各位,我在STM32F407上测试浮点运算,以下代码使用软件浮点时耗时129毫秒,使用硬件FPU时耗时132毫秒,请问是哪里没有设置对吗?


for(uint32 cnt= 0;cnt < 10000;cnt ++)
    {
        temp_f1 = sqrt(2.0f) + cnt;
    }


使用FPU时执行了以下语句的
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121123
QQ
发表于 2026-1-27 11:20:54 | 显示全部楼层
1、for循环改了,改成至少16个一组,展开操作,
2、sqrt改了,改成用硬件浮点平方根

MDK AC5和AC6的DSP平方根加速指令还不一样
https://forum.anfulai.cn/forum.p ... 0762&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2026-1-27 11:49:27 | 显示全部楼层
谢谢硬汉,改了之后确实运算飞快
回复

使用道具 举报

0

主题

310

回帖

310

积分

高级会员

积分
310
发表于 2026-1-27 13:04:25 | 显示全部楼层
用sqrtf,qsrt是double,sqrtf是使用FPU的VSQRT.F32
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-2-24 10:57 , Processed in 0.058364 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表