M453板子计算浮点数实验

  • 蓝蓝的天
  • LV5工程师
  • |      2016-05-07 19:00:07
  • 浏览量 632
  • 回复:1

浮点运算单元(FPU)是专用于浮点运算的处理器。M453系列MCU属于ARM Cortex-M4架构,这和M0、M3的最大

不同就是多了一个F-float,即支持浮点指令集,并兼容支持IEEE-754标准,因此在处理数学运算时比M0/M3多出

数十倍甚至上百倍的性能。硬件上要开启FPU是很简单的,通过一个叫协处理器控制寄存器(CPACR)的设置即可

开启M453的硬件FPU。CPACR这个位的设置在system_M451Series.c文件里面开启,代码如下:

M453板子计算浮点数实验

从上述程序可以看出,只要我们定义了全局宏定义标识符__FPU_PRESENT以及__FPU_USED为1,那么就可以开启

硬件FPU。其中宏定义标识符__FPU_PRESENT用来确定处理器是否带FPU功能,标识符__FPU_USED用来确定是否

开启。

若在M451Series.h头文件里面,则可以看到默认定义__FPU_PRESENT为1,即M451默认带FPU,代码如下:

但是,上述仅仅说明处理器有FPU是不够的,我们还需要开启FPU功能。

开启FPU有两种方法:第一种是直接在头文件core_cm4.h中定义宏定义标识符__FPU_USED

的值为1;第二种是直接在MDK编译器上面设置。

在MDK编译器里面单击下图图标:

进入项目设置选项,选中Target选项卡:

Floating Point Hardware:选择Use Single Precision

经过这个设置,编译器会自动设置标识符__FPU_USED为1.这样遇到浮点运算就会使用硬件FPU的相关指令

执行浮点运算,从而大大减少计算时间。

源代码:


  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
蓝蓝的天 2016-05-07

首先使用FPU计算,观察效果:

可以看到用时245ms。

然后设置不用FPU,如图:

观察效果:

可以看到用时1074ms,使用FPU快了4倍还多。

0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子