笔者为了完成该文章,查阅了大量网上的资料,自己做了一些鉴别,总结了一些常用的问题,供大家参考,也供自己学习。
为什么要提高单片机计算速率
- 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=b9写为a=b<<3+b
函数和宏函数
使用宏函数可以减少函数调用的时间。但是我个人还是不建议写宏函数,主要原因是看着难受。
学会多使用算法
- 实现同样的功能,有的人的代码看着爽,有的人的代码看着难受,有的人的代码很没营养,想看看例子的话,去翻翻自己大学做的第一个项目就可以感受一下了。
- 需要知道常用的一些算法,比如数据排序,数组求和。
尽量用查表的方式代替复杂的乘除运算
CrekerLi,2017年9月1日晚00:01--整理以前的工作笔记。