浮点加速功能,需要STM32硬件上拥有FPU单元,此外代码工程需要设置编译选项,将浮点运算编译成特殊的指令,这些特殊指令,可将驱动FPU硬件加速浮点运算。
测试发现,STM32的浮点加速,只能够加速float类型的浮点运算,效果显著(快5~6倍),但是无法加速double类型的浮点运算。
基于Eclipse与GCC编译器开发的工程,浮点加速可以在编译选项中开启,其他IDE开启方法可到编译选项中去寻找。
开启后,makefile中的编译选项会出现如下字样:
开启后,汇编指令会出现带 v 开头的浮点运算指令:
如果未开启FPU加速,则汇编指令会多很多条,如下:
而double类型,无论FPU编译选项是什么,都会编译出下图的汇编指令:
可见,double类型虽然增加了浮点数精度,但是大大降低了运算速度。而float可以借由FPU加速,实现快速计算。具体数据类型选择需要根据实际情况进行