怎么学嵌入式单片机?学习路线是什么?附全套教程+工具包

我属于半路出家,之前专业是电气,到目前为止,做单片机开发有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周就上手了。

 

最近有粉丝跟我要单片机的资料,我累积花了一个月时间,根据我10年从业经验,精心整理了一份「单片机入门到高级教程+工具包+22个热门项目」,别人教你做加法,我教你做减法,资料在精不在多,这份资料都是实际开发最常用的技术点,让你少看上百G无用教程,重点开源!开源!开源!!需要的可以找无际单片机编程来拿。

给TA买糖
共{{data.count}}人
人已赞赏
单片机百科单片机自学指南

单片机怎么入门?怎么学?要学什么?

2023-5-22 18:35:38

单片机百科单片机自学指南

电阻的工作原理、选型、参数、应用电路详解

2023-5-22 20:46:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧