你点击蓝字关注,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞
(相关资料图)
文 |无际(微信: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语言指针用法详解,通俗易懂超详细!