你点击蓝字关注,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞
文 | 无际(微信:2777492857)
全文约1582字,阅读大约需要 5 分钟
单片机的程序比软开少一些,真正想编写出高效的代码,还是要积累很多年的。在做研发工程师的10年里,我经历过几个公司,看过很多工程师写的代码,但真正能让我跪着看完的,极少。哪怕是大厂工程师,也会有让人笑掉大牙的代码。高效的背后,有很多学问,需要有一定的数学功底,对编译器有较深的了解,懂汇编。具备这些能力,写出来的代码,才能让cpu执行这段代码所花费的时间,以及占用的ROM和RAM资源更少。然而,如果把项目每个细节,都优化到高效的程度,花费的时间,是平时的两倍。所以,我们在做项目时,一般只优化核心功能,才能赶上项目的进度,除非经验相当丰富。去除代码中不必要的操作,如多余的变量赋值、函数调用等。特别是尽量别用float,浮点运算通常需要更多的CPU周期和内存空间,因为浮点数的表示和运算比整数复杂,除非单片机内置了硬件浮点单元(FPU)。能用unsigned就不用signed,无符号整数的运算可能比有符号整数更快,因为不需要处理符号位。能用char就不用int,较小的数据类型在处理和传输时更快,因为它们占用的内存和带宽更少。特别对于存储大量数据的数组或缓冲区,使用 char 类型可以显著减少内存占用。比如说STM32单片机,可以利用DMA传输数据,减少CPU负载。用i--、i-=1、i++、i+=1、去替代i = i-1,i=i+1的操作,有些编译器对前者进行了优化,效率更高。可以根据等差数列求和公式,1到100的和可以表示为:n是序列的最后一项,即100。将这个公式应用到代码中:尽管程序都能得到相同的结果,但是第二种方法在运行效率上明显优于第一种。因为它避免了循环的开销,直接通过数学公式计算出结果。在编写单片机代码时,尽量通过数学方法,或其他算法技巧,提高程序的执行效率。这不仅可以减少了CPU的计算时间,还能减少程序占用的内存空间,从而提高整体性能。插个题外话,之前很多老铁问我,数学不好,可以学单片机吗?我觉得这就是一个很好的例子,数学不是门槛,而是天花板。那同样都能实现功能,效率低点就低点呗,有什么所谓?比如数学功底好的,可以用低端单片机去实现功能,而数学功底不好的,写出来代码效率低,则需要性能更强的单片机支撑。不过,很多产品,对效率的要求并没这么苛刻,哪怕用第一种方式,照样没问题。end
下面是更多无际原创的个人成长经历、行业经验、技术干货。
1.电子工程师是怎样的成长之路?10年5000字总结
2.如何快速看懂别人的代码和思维
3.单片机开发项目全局变量太多怎么管理?
4.C语言开发单片机为什么大多数都采用全局变量的形式?
5.单片机怎么实现模块化编程?实用程度让人发指!
6.c语言回调函数的使用及实际作用详解
7.手把手教你c语言队列实现代码,通俗易懂超详细!
8.c语言指针用法详解,通俗易懂超详细!