单片机学了很久,一直停留在点灯的水平,复杂的只能抄别人的代码怎么办?_环球看热讯

2023-06-25 15:12:18     来源:面包芯语

你点击蓝字关注,回复“入门资料”获取单片机入门到高级开挂教程

开发板带你入门,我们带你飞


(资料图片仅供参考)

文 |无际(微信:603311638)

全文约1475字,阅读大约需要5分钟

最近看到一个提问:单片机学了很久,一直停留在点灯水平,负责的只能抄别人的代码?

我先给答案:因为缺编程思维和代码水平两种能力。

简单来说,就是缺少大量项目实战。

单片机只是工具,用工具独立做项目,还有很漫长的路要走。

好比你会写字,会成语,不代表你能写出一篇合格作文。

给大家分享下自己是如何一步步成长过来的。

而且我可以确定,每个工程师早期都会碰到写程序没思路,写不出来的问题。

刚开始,和大家一样,通过开发板学了单片机,C语言,基础电路。

我第一个学的STC89C51单片机,学完以后没有马上去学STM32,当时STM32还没现在这么火。

学完STC89C51以后,我基于开发板上去做了一个电子时钟小项目,用DS1302时钟芯片,数码管显示时间,并可以通过按键去设置时间。

别看就这么简单的小项目,对新手来说还挺有挑战的。

如果光让我自己想,肯定做不出来,因为压根没经历过。

开发板有提供这种小项目的例程,我是先理解例程代码是怎么运行的,然后自己一边写,慢慢磨出来的。

做完这个项目以后,我就出去找工作了,找了几个星期,都被拒绝了。

后面我又在网上买了个智能小车的项目来做。

这个项目比电子时钟更复杂一些,说真的项目虽然很low,但是确实学到了很多东西。

比如H桥驱动电路让我对MOS管的理解更深了,还有看数据手册更熟练了。

当然,最重要的是,编程思维和代码水平提高不少。

做这个项目,也是按照老套路,先理解每个功能模块硬件原理,再看例程代码实现的原理,边抄代码边想加深印象。

最后时间关系,我也没完全独立写出来,但是每块代码都能看懂。

后面我就去工作了,第一个项目也是用STC单片机做的,我就负责改改程序,根据客户要求定制下产品功能。

说实话,看别人代码,比自己重写还痛苦,特别是没注释,命名又不规范的代码。

我碰到有些特别变态的工程师,变量都是a1,b2,abc这样的名字,这种只有下图能表达我的心情。

虽然前面做了2个小项目,但是代码改起来还是很痛苦,看不懂原作者的思路,只能尝试改代码,然后下载进去看看效果,不行再改,循环这个过程,循环多了自然就彻底搞懂了。

其实,我用得方法不对,虽然也能改出来,但是效率太低了。

今天我直接把比较高效的方法告诉你。

第一步:一定要非常熟悉产品功能

很多新手是通过代码去反推产品功能的,这种逆向思维,难度比较大。

第二步:一定要熟悉电路每个功能模块的原理

思路取决于电路的原理,比如按键检测,有些是通过引脚的高低电平,有些是通过AD值的变化。

所以写程序没思路,有很大原因是你不知道电路原理的规律。

第三步:看类似功能的代码思路

如果功能一样的代码是最好的,可以通过电路原理去推测代码的思路,这也是你学习很好的方式。

第四步:验证思路

一定要尝试改代码,下载到硬件上看看效果,验证下你的推测对不对。

这一步最重要,你想达到写代码自由,真的是要靠多实践的。

第五步:举一反三,融会贯通

前面模仿别人的思路和代码,就是积累的过程,这种经验没办法通过一个教程学会的。

比如今天你学了一个按键检测的思路和代码,你可以把它保存到自己网盘里,下次碰到类似功能,直接复制出来改。

改的过程就是举一反三,因为每个产品按键数量和功能肯定不一样。

举一反三多了,后面也就能融会贯通了,不管多少个按键,要检测什么状态,你都会游刃有余。

而不是说什么都要自己独立写出来,这是初学者的通病,不要和自己较劲,不懂就先抄作业。

那些资深工程师,能独立做项目的,并不是比初学者聪明。

而是积累的项目多了,积累的功能模块多了,基本能覆盖大多数产品功能了,自然就能独立开发了。

独立开发不是绝对的,是相对的。

哪怕你做了10年,碰到没做过的项目,没做过的功能,一样需要先学习。

最后彩蛋时间!!!

下面是更多无际原创的个人成长经历、行业经验、技术干货。

1.电子工程师是怎样的成长之路?10年5000字总结

2.如何快速看懂别人的代码和思维

3.单片机开发项目全局变量太多怎么管理?

4.C语言开发单片机为什么大多数都采用全局变量的形式?

5.单片机怎么实现模块化编程?实用程度让人发指!

6.c语言回调函数的使用及实际作用详解

7.手把手教你c语言队列实现代码,通俗易懂超详细!

8.c语言指针用法详解,通俗易懂超详细!

标签:

包装