写这篇文章的初衷要从我带一个朋友入坑学习单片机的经历开始讲起;
我的朋友是学汽车电子技术专业,毕业后去了汽车修理厂工作,每天接触各种汽车,给老师傅跑腿打杂,接触一些汽车电路,应该说日子过的还好。修了一年车;不过修车总给他一种一眼看到头的感觉(子非鱼,安知鱼之乐?对不起,他自己告诉我的);
于是,他跳槽了,找了一份电子工程师的工作;
工作内容和我差不多,平日里打打杂;
平淡的日子就这样重复着,直到有一天,他说想学单片机;让我给他支支招。
基础知识:
第一天,我给他制定了整体的学习计划,基础知识篇;
学习单片机,C语言是必须掌握的编程语言,看视频的效率相对来说高一些,于是我给他推荐了B站某老师的C语言视频课程;
因为视频有很多集,比较长,于是我只推荐他看比较基础的部分,做一下课后习题,掌握基本的语法,if,while,for等语句;
纸上得来终觉浅,学单片机还是得重在实践;为了开源节流,我把以前吃灰的STM32开发板拿给他,毕竟资料很多嘛,学起来也方便;
理想是很丰满:
原本计划用cubemx+st官方的HAL库来进行实践,毕竟B站还有之前开发板的配套资料也不少;
现实却很骨感:
装cubemx软件就搞的满头大汗了,最后是安装的JDK版本不对,直接裂开,一个晚上时间没了;
我给他操作了一遍使用cubemx配置自动生成代码,然后点亮一个LED,整个过程很顺利,没有写一行代码,但是我给他解释代码的时候,他是完全懵逼的状态,不知其所以然,脸上写着十万个为什么!!!
好吧,毕竟HAL库封装的很不错,感觉对新手不太友好(前面提到他C语言基础还不是很好);后来我知道他偷偷跑去看结构体和指针的内容了。
看来,前面的学习计划失败了。还得从最简单的学起,先学习51单片机,因为简单,可以先点亮一个灯,建立起兴趣;
于是,我又给他推荐了一款51单片机开发板,淘宝上找的,感觉功能很全,板子也比较大,很适合初学者,价格也是中等偏上的;
开始学习51单片机
订购的51单片机开发板,隔天就到了,看配套视频课程,写下了单片机的hello world,然后灯就亮了;
新起点51单片机
#include <reg51.h> sbit LED=P1^0; void main(void)
{ LED = 0; //点亮指示灯 while(1); }
同样是点亮一个LED,但是这次好像有内味道了,看到实验成果,他笑出了猪叫;
推荐的这款新起点51单片机开发板,有配套教学视频;
看视频,一边补充C语言知识,一边对照着每个单片机讲解视频进行学习,视频中的讲解比较浅显易懂,对于新手比较友好;
把课后习题都做了一遍,流水灯,数码管,串口,定时器,外部中断,初步掌握这些基本的应用之后,
他还尝试做了一个循迹小车;虽然循迹小车比较简单,但是很有里程碑意义的,这里面涉及到传感器技术,直流电机的驱动,以及微控制器等技术;
视频中的老师讲解很给力,讲的很细,作为单片机入门,他花了很长时间,所以新手千万不要不要着急焦虑,产生挫败感,自我否定,自我怀疑;
言归正传,如何学习单片机呢?这个问题,通过上述朋友的学习过程,不难回答了,应该先从51单片机学起,先掌握单片机的基础理论知识,然后不断拓展自己的知识面,不断提高知识深度;才能开发新项目。
软件部分
C语言必须精通,但绝非一朝一夕的事情,需要大量时间去实践,去写代码,去调试,去做项目,同时还得学习理论,通过实践加深理解。
语言只是工具,学会了C语言,你已经知道如何砌砖了,但是如何建造一座高楼大厦?
这时候,就需要学习数据结构,算法和设计模式,这里推荐《算法导论》,《代码大全》都不错,也是经典了,而且这两本书也会长期陪伴着你;
硬件部分
模拟电子技术和数字电子技术,如果是非科班,零基础的同学,推荐麻省理工的公开课《电路与电子学》,教授讲得很好,里面涵盖了模电和数电的内容;
原理图设计,能看懂数据手册,根据项目需求进行电子元器件的选型;
熟悉基本的电子元器件,阻容,磁珠,MOS管,二极管等等;
也需要了解,运放,数字IC,存储芯片等等;
制作PCB图
需要学习一款EDA软件,Altium designer用的比较多。多用几次就熟练了;
最后我想说的是,最重要的还是动手实践,自己画个板子,工厂打样,焊接。软件靠精力,硬件靠经历,多爬坑,学的就多了,技术在于积累。
最后推荐
这家的51单片机开发板做的不错,视频讲解的很详细,价格也很便宜。
创客海淘宝网点:
https://letsflynow.taobao.com/?spm=2013.1.0.0.680b72baggd2FR/
新起点51单片机入门教程:
创客海技术社区地址:
https://gitee.com/makermare/