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

F4系列双精度浮点运算和FPU的关系

[复制链接]
eastellar 提问时间:2017-8-24 11:13 /
在程序调试中发现,一样的代码,在X86 PC机环境下,用vc运行的运算精度和收敛速度要比F407单片机运行效果好。变量和函数我都是定义成double的,看资料,fpu支持的是32位浮点运算,那么fpu在这个双精度的浮点运算中是如何发挥作用的呢?(算法运算量很大,我把fpu关掉的话系统直接出错。所以虽然都是double类型的运算,肯定还是fpu在起作用)
收藏 2 评论2 发布时间:2017-8-24 11:13

举报

2个回答
Angel_YY 回答时间:2018-2-13 13:10:35
个人理解,无论是double还是float计算,都要先把数据放到寄存器,通过寄存器进行计算,而ARM M系列是32位寄存器,所以double也要分成两部分,此时也就相当于把double转换成float了。此时就可以使用fpu进行浮点运算了。所以double和float都会用到fpu。 t.png

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

toofree 回答时间:2018-2-14 01:30:45
对这个问题,可以开个Keil工程对比一下
FPU编译选项开关

傲游截图20180214011606.jpg

FPU打开的情况下,编译的目标代码
傲游截图20180214012009.jpg

FPU关闭的情况下,编译的目标代码
傲游截图20180214011541.jpg

关于LDR、VLDR、VSTR编译指令,附几个链接,请参考。
ARM 浮点运算详解
http://blog.csdn.net/sydnash/article/details/6366964
VLDR,VSTR
http://blog.csdn.net/liuchao1986105/article/details/6552306
LDR指令
http://blog.csdn.net/tanyouliang/article/details/6767011




评分

参与人数 1蝴蝶豆 +5 收起 理由
zero99 + 5 新年快乐

查看全部评分

所属标签

相似问题

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