STM32F4+CubeMX使能FPU(编译器V6)

起因

在使用STM32F4时发现浮点运算很慢,按道理自带FPU的F4运算的应该比较快。同时由于自己电脑用默认的编译器V5编译实在是太慢,编译一次要两三分钟,于是换成编译器V6了。

查了些资料,发现没开FPU……

问题

有前人写的博客提到如何开启FPU,在这里提一下,编译器V5的适用于这种情况:
https://blog.csdn.net/jaysur/article/details/108928490
https://blog.csdn.net/yuyan7045/article/details/121076181
然而我这里是编译器V6,直接套用报错找不到__asm,肯定是编译器的问题……

如下图,头文件中没有定义__CC_ARM 以及下面的一些宏定义,FPU没开。但如果按照上面链接提到的方法,编译器V6不能定义__CC_ARM
头文件设定

编译器的不同

根据
https://blog.csdn.net/ybhuangfugui/article/details/99826708
中提到的编译器差异,有一些不兼容的问题,可以看到编译器V6适用GNU.正好,在这个core_cm4.h中有这一段:

编译器V6适用
于是我照样画葫芦把宏定义填了进去
魔术棒定义

,__VFP_FP__,__FPU_PRESENT=1U,ARM_MATH_CM4

这样就可以了,测试验证发现计算速度快了一倍多

使用注意

STM32适用于单精度浮点运算,所以在代码里面要有特别标识
float
不加f的话可能默认成double
double

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值