单片机浮点数运算之比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机浮点数运算之比较
今天心血来潮,做了几种单片机之间浮点数运算速度的比较,实验很简单,编一个实现两个浮点数相乘的小程序,然后编译、仿真,看看每种单片机执行乘法运算需要多少个机器周期,程序如下:
void main(void)
{
float i,j;
i=12.8;
j=3.1415926;
i=i*j;
for(;i>0;i--); //避免编译警告或被优化掉
while(1);
}
进行比较实验的单片机及相关数据如下(以下执行时间均是指执行i=i*j所用指令周周期):AVR:
实验芯片型号:ATMAGE16
编译仿真环境:IAR FOR AVR5.30
执行时间:181
MSP430:
实验芯:MSP430F2132
编译仿真环境:IAR FOR MSP230 5.10
执行时间:326
STM32:
实验芯:STM32F107xC
编译仿真环境:IAR FOR ARM 5.41
执行时间:38
PIC16单片机:
实验芯片:PIC16F877A
编译仿真环境:MPLAB 8.53 + PICC9.70
执行时间:1314
51单片机:
实验芯片:AT89C51
编译仿真环境:Keil uVision2
执行时间:207
执行时间(指令周期)比较图
从结果可以看出,执行效率最高、速度最快的当属smt32。
当然,stm32与其它另外4种单片机不是一个等级的。
效率最低、速度最慢的就是PIC了,如果采用同样的晶振频率,PIC的执行时间将是AVR 的28倍!做为16位单片机的MSP430让人有点小失望,竟然还干不过51,如果换用单周期的51单片机,那么它的执行速度也只略逊于AVR.
总结:
AVR不愧于“高速单片机”的称号;
MSP430优势有在速度上,在于它的低功耗设计;
PIC指令效率太低
51不愧是最经典的单片机;
Stm32不是神话,只因为它是ARM Cortex-M3。