单片机不踩坑的学习路线
我属于半路出家,之前专业是电气,到目前为止,做单片机开发有12年时间了,做过的行业和技术涉及比较杂,智能楼宇、智能家居、智能安防、电表、车载产品、Lora、WiFi、4G、GSM、蓝牙等等,大大小小产品做过几十个。
做过单片机开发的,相对纯软件程序员,最有意思的是,我能搞出来一个实实在在的东西,而且这个东西,自己从硬件到软件都很通透,不像做纯软件做应用的,底层全部现成的,你只是个调库侠。
如果你经常阅读嵌入式怎么学的文章,你会有一种错觉,这个行业要学得东西太多了,觉得门槛很高,收入和付出不成正比。
从事行业越久,我越发现这个行业涉及的知识确实无穷无尽,一辈子也学不完。
但是如果你的目标仅仅是找份工作,并不需要学很多东西,4-6个月左右完全可以达到找工作水平。
很多东西,你前期的时候并不需要深入学习,甚至都不需要学。
下面根据我从业多年经验,给大家总结一个比较靠谱的学习路线,让你少看几十G教程。
一、硬件需要学习的内容
1.做嵌入式开发,需要对硬件有一定了解,能看得懂电路图就可以了,不需要会设计的程度。
特别是不要纠结模拟电路,否则你会死得很惨,这个不是新手阶段能学得懂的。
以前我就是在模拟电路上浪费了很多时间,学不懂、工作以后才发现模电的知识实际用得也很少。
2.先学习常用的元器件,比如电阻、电容、电感、二极管、三极管、MOS管原理及作用。
这些内容,基本上就是刚需中的刚需,产品中最常用的了。
3.学完常用元器件,再通过开发板或者项目学单片机最小系统电路和功能性模块电路(LED驱动、按键检测、数码管显示、屏显示、蜂鸣器驱动、存储电路等),不断积累。
4.学完这个再学1个画图工具,我最开始学的是Protel99se,不过现在已经过时了,目前一般用AD、Allegro、Pads、Cadence等等,学会其中一款,能用它看原理图就可以了,先别学PCB,这是硬件工程师干的活。
二、软件学习
做嵌入式单片机开发,软件是我们学习的主力,也是花费时间最多的地方。
1.C语言
单片机支持C语言和汇编两种语言,目前产品开发主流是C语言,所以先学C语言就可以了。
前期学学基本语法就够了,可以参考这个目录:
不用学得太深,这个阶段甚至指针都可以先不学
2.51单片机
我是先学了STC89C51单片机,我也建议零基础的从51单片机开始学习,比较好上手,直接淘个开发板跟着教程学,基本没什么技巧。
C语言和单片机可以同时学习,正好边学边实操,实操才是重点,这个技术光看是学不会的。
3.做小项目
学完51单片机以后,先不要急着学STM32或者性能更高的单片机,不然你后面会学得很吃力,问题比你学得知识还多。
先用51单片机做几个小项目,比如智能小车、电子时钟、温湿度智控之类的。
这一步很关键,也是最多人跳过的一步,为什么?
单片机只是工具,更高端的单片机,只能代表这个工具能做更复杂的项目,但是能不能把项目做出来,不在于工具本身,而是用工具的人,取决于你的编程思路和编程水平,这两东西只能通过项目去锻炼出来。
4.学习C语言高阶用法
这个阶段深入学指针、结构体、枚举,以及它们的实际应用是最佳时机。
后面STM32的库,会大量使用这些玩意。
5.学STM32
STM32对于初学者来说就是噩梦,我在学STM32的时候已经工作了大概半年了,用过STC15系列和NXP的单片机改过项目程序。
即便如此,研究起来还是会有点吃力,STM32主要就是学库的使用,如果你深入寄存器去学习,虽然学得比较透彻,但会遥遥无期。
其实STM32很多外设可以先不用学习,除了给初学者学习的开发板,大多数项目只会用到它部分外设资源,并非全部。
所以,我们前期只需要学一些常用的外设就可以了,比如说GPIO、Systick、Timer、USART、NVIC、EXTI、DMA、ADC、SPI、IIC。
这些外设基本上是产品的刚需。
6.持续做项目
前面学得那些就是基础技能,接下来就需要不断做项目提升,成长速度和高度由项目数量和质量决定。
如果你从事开发很多年,会发现,真正让你成长最大的就是工作以后,因为工作内容基本就是做项目,做项目,做项目,还有一点很关键,就是身边有领导或同事能指导你。
如果你学完STM32,找工作处处碰壁,也是正常的,毕竟光会基础技能毫无竞争力,就是看运气。
解决办法就是可以自己去网上找些项目做,如果自己摸索太慢,推荐无际单片机编程的项目,有资深工程师一对一指导,成长比较快。
7.RTOS
实时操作系统,我认为在你没碰到需求之前,可以先不用学,毕竟不是刚需,当然,你学了也可以作为一个加分项。
不过我建议在你没做过任何基于STM32项目的时候,不要去学,不然可能会耗费你1-2个时间。
因为你的经验和编程底子太薄,去理解RTOS的知识占用时间太长,而且RTOS的很多东西,你不知道它们到底用在哪里,学得云里雾里。
核心还是先通过项目不断提升编程思维和代码水平,干它3-4个项目以后,RTOS对你来说就是水到渠成的事情,可能1-2周就上手了。
作者:无际单片机项目实战