单片机如何提高计算效率

笔者为了完成该文章,查阅了大量网上的资料,自己做了一些鉴别,总结了一些常用的问题,供大家参考,也供自己学习。

为什么要提高单片机计算速率

  • ROM:64KBytes
  • RAM 20Kbytes
  • 主频:最高72MHz......
    这是笔者最近开发产品用的一款ST的单片机,上面列举了几个参数。是的,ROM64K,和PC端,移动端比起来,那可以算得上是原始部落与现代军队的武装配置了。物资装备不足的情况下,要么努力扩充装备,要么能省就省。
  • 所以,速度比你快,内存比你大的XX都在开发使用各种管家节省资源,作为开发单片机的我们,还有什么理由不努力。

使用小数据类型

  • 判断一下变量的长度,能用2个字节,就不要4字节,能1个字节就不要用2个字节。
  • C语言数据类型长度
数据类型 长度
char 1
short 2
int 4
long 4
float 4
double 8
  • 一句话,能用短就不要用长的。

使用自加,自减

  • 使用a+=1代替a=a+1指令;两个指令结果一样,但是消耗的计算内存是不一样,后者需要生成另一个缓存a+1,然后再赋值给a,前者是直接赋值。

平方运算

平方运算尽量写成乘法运算,比如:a=pow(3,2) 可以改为a=3*3
说明:在有内置硬件乘法器的单片机中(如51 系列),乘法运算比求平方运算快得多, 因为浮点数的求平方是通过调用子程序来实现的,乘法运算的子程序比平方运算的子程序代码短,执行速度快。该语句摘自一微信公众号,地址忘了。

用位移和加减的方法代替乘法除法

a=b8写为a=b<<3
a=b
9写为a=b<<3+b

函数和宏函数

使用宏函数可以减少函数调用的时间。但是我个人还是不建议写宏函数,主要原因是看着难受。

学会多使用算法

  • 实现同样的功能,有的人的代码看着爽,有的人的代码看着难受,有的人的代码很没营养,想看看例子的话,去翻翻自己大学做的第一个项目就可以感受一下了。
  • 需要知道常用的一些算法,比如数据排序,数组求和。

尽量用查表的方式代替复杂的乘除运算

CrekerLi,2017年9月1日晚00:01--整理以前的工作笔记。

你可能感兴趣的:(单片机如何提高计算效率)