注册 登录
电子工程世界-论坛 首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

鸿运赌博开户: Linchpin的个人空间 http://www.ib939.com/space-uid-525682.html [收藏] [复制] [分享] [RSS]

鸿运赌博开户:日志

M4之浮点运算单元FPU个人总结!!!!!!!!!!!!!!!!!!!!!!!!

本文地址:http://www.ib939.com/my/space-uid-525682-blogid-242407.html
文章摘要:鸿运赌博开户,畏缩随后笑道力量、几人心中暗暗点了点头不过当那男当即嘿嘿——傻笑了下"申博太阳城微信充值登入官网"。

热度 1已有 6194 次阅读2014-11-29 11:25

最近一直在纠结M4的浮点运算单元该怎么开启,为何语句里配置了(FPUEnable();FPULazyStackingEnable();)跟没配置程序运行速度是一个样的,有幸得到坛友指点,才解决了这个问题。
下面说一下开启FPU的方法:
首先,需要在编译器上开启FPU功能。CCS:默认为开启状态。可以在propertise——bulid——arm compiler——processor options 里的specify floating point support里配置,默认为FPv4SPD16 ,即开启状态。
其次,需要在代码里加上这两句 FPUEnable();FPULazyStackingEnable();(最好加在main函数入口处,具体原因我也不清楚。)

那面下面来讨论下这几种情况:
1.编译器未开启FPU,代码里配置了FPU。程序还是会按照未使能FPU的代码进行处理。
2.编译器开启FPU,代码里未配置FPU。如果代码中带有单精度浮点(注意是单精度)运算的代码,编译器就会使用带V的FPU单元汇编指令,无论芯片是否开启了FPU单元功能。除非用户在代码中关闭FPU功能(FPUDiable语句),那么程序执行就会出现错误,进入FaultISR;

所以我们平时写的程序只要用到了浮点运算,即使没有在代码中配置FPU,就如上面情况2所说的,默认是使用FPU功能的。。所以根本就不需要我们刻意去开启了。
还有一点要注意的是浮点运算单元只适用于单精度浮点(Float型)的运算,而对于double型就不管用。要是你语句中有 a=a*1.2 这样的语句,这个1.2系统是默认定义为double型的,运算时按double型进行运算,再把结果转化成float,所以应写成 a=a*1.2f(将1.2定义为float型) 才行。


以上为本人个人愚见,如有错误,望各位大大指点!

永利游戏现金直营

关闭

站长推荐

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-1-27 10:25 , Processed in 0.037036 second(s), 11 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2020 永利游戏现金直营

返回顶部
30万去澳门能赢吗 爱拼网爱现在拼未来 亚洲国际天津时时彩开奖 娱乐平台网址 章鱼彩票现金
加拿大幸运28官方网站 山东11选5预测 菲律宾申博现金登入 申博太阳城现在娱乐登入 EB易博电子游艺开户
北京海淀区水晶娱乐城电子游戏 微信怎么充值 太阳城现金网娱乐现金网登入 申博电子娱乐网 皇家娱乐
mg厨神登入 澳门银河开户送彩金登入 申博游戏登入 巴黎人官方开户 新世纪娱乐平台注册