STC32F 硬件浮点运算
01 硬件浮点库
一、前言
在新版的STC32F系列的单片机中, 包含有很多新的特性。 其中一个就是内部具有硬件浮点运算器, 以及相应的三角函数相关的数学库。 `这些功能将会扩展它在电机控制等、 信号处理等领域的应用。 下面通过资质的测试电路板来对比一下它的硬件运行速度。
二、测试结果
首先, 利用STC-ISP软件中的资料下载中, 将STC32F的单精度浮点库下载到当前工程目录下。 然后, 在source Group中通过增加存在文件, 将浮点库增加到当前工程文件中。 这是对比测试程序, 利用 P1.0 端口显示中间程序所执行需要的时间。 中间包括有浮点数的一些组合运算和常见到的三角函数的运算。 运算时间可以通过测量 P1.0 信号高电平来获得。
首先看一下在没有加入浮点库的情况下, 程序执行时间。 使用示波器光标测量功能, 可以测量这一段运算时间大约为 229 微秒。 下面我们再加入硬件浮点运算库, 可以看到运算时间明显减小了。 为了精确测量时间, 将示波器的时间拉长, 再次利用光标测量脉冲时间, 可以看到此时运行时间只有 16.2微秒。 经过对比, 可以发现利用单精度浮点库程序运行速度提高了 14 倍。 上面时间测量是在 IRC 时钟频率 60MHz 情况下测量得到的结果。
这里单独对比一下浮点数的运算速度, 这里为了避免 C 语言编译器将这里的运算给优化掉, 增加了一个循环变量 Count, 利用示波器光标测量, 可以看到在没有增加浮点库的情况下, 浮点数的除法和加法消耗了16.5微秒。 利用浮点库之后, 同样的运算消耗的时间为 2.85微秒, 速度提高了大约 6 倍。 由此可见, STC32F的浮点库对于三角函数的加速更加明显。
※ 结 论 ※
本文测试了 STC32F 单片机中的硬件浮点运算器和三角函数运算器的功能。 利用下载的浮点运算库, 可以直接将C251编译器中浮点运算进行提速。 通过对比可以看到整体的速度提高还是非常明显。