曾经有新手和我抱怨:为什么嵌入式开发这么难?
相信我,你不是学不会,只是没找对方法。
这是一片真正为「终结迷茫」而生的回答,内容有点长,如果你赶时间,建议先点赞+收藏防止找不到,如果你想快速切入嵌入式开发行业,请花几分钟,从头到尾不要错过一字一句,因为字里行间都是我从业11年的经验精华。
学习嵌入式,定位规划比课程本身更重要!
一、定位
1.嵌入式主流的几个方向
这是几个是目前市场需求最大的,说白了就是学完以后工作比较好找。
我相信大多数人学习都是奔着高薪工作的吧。
这几个方向里面,单片机开发是最偏向硬件的,Linux驱动开发其次。
Linux应用开发基本上算是纯软件了,基本很少会接触到底层硬件的东西。
很多人,连这个几个方向都搞不清楚,以为嵌入式就是搞ARM+Linux,怎么搞,搞什么一窍不通。
之前我们无际单片机有些学员就走了这弯路,刚开始就是定位不清晰,各种东西乱七八糟地学,浪费1年时间感觉还是啥也没学到。
后面我们给他规划职业方向,配合我们几个项目实战课程,学了4-5个月就直接去工作了,研究生基本都是16-18K起步。
所以,我认为定位比你盲目找课程重要太多了,方向不对努力翻倍,学习周期长又看不到结果,很容易就放弃了。
除了以上几个方向,还有FPGA、以及安卓开发,这里就不一一举例了。
2.各个方向各自优势
这里我主要拿单片机开发和Linux驱动开发这两个方向对比。
产品应用:
单片机适用于低成本、低功耗中低端产品应用。
Linux驱动开发适合对成本不敏感、对功耗不敏感,高性能中高端产品应用。
学习周期:
单片机更短,Linux驱动开发更长。
薪资待遇:
单片机开发比Linux驱动开发要低。
未来前景:
单片机开发适合个人低成本创业,一个人能同时做硬件和软件。
Linux驱动需要一个团队,比如说硬件设计、驱动开发、应用开发。
投产比评估
如果你急着找工作,可以先从单片机开发入手。
如果你不急着找工作,希望能做更高端产品可以直接上手Linux驱动/应用开发。
根据无际单片机以往学员数据,个人认为单片机开发投产比比Linux方向要高,零基础坚持学4-6个月就能达到工作水平。
虽然起步工资没Linux方向高,但是有稳定的资金流才是王道,后面再想学什么也没那么大压力。
二、学习路径规划
相信看到这里,你已经知道定位的重要性了,不根据职业定位去规划课程就是浪费时间。
这11年,我一直在从事单片机开发,所以以下学习路径应该是你见过最高效最实用的。
1.C语言基础
很多人问我,汇编要学吗?我直接告诉你,不用学。
我们的目标是快速达到我们的目标,汇编虽然能让你更深入理解单片机原理,但是工作当中并不实用。
至少我做了开发这么多年,基本没用到过。
汇编一般会在以下场景用:
a).资源非常匮乏的51单片机,ROM和RAM不够只能用汇编。
b).RTOS移植的时候,每款单片机指令集有区别,你系统去学习没太大意义,还不如不懂的指令直接网上搜快一点。
所以,听我的,前期主攻C语言不会错。
如果你没学过C语言,建议你看下无际单片机录制的单片机C语言课程。
市面上很多都是针对上位机的C语言,我们这个是针对单片机的,虽然大多相同,但往往就是一些细节让新手从上位机过渡到单片机时一脸懵逼。
课程都是开源的,文章末尾会告诉你去哪领取。
2.电路基础
学单片机开发,有一半都是在学习电路途中放弃的。
我当初也是差点在学模拟电路时放弃,直到工作了很多年,我直接把模拟电路书和视频都扔了。
实际产品开发用的很少,你只需要学习一些常用元器件原理和应用场景就可以了。
电路不用学得太深,你知道什么信号进来单片机,单片机输出什么信号控制外围功能电路就够了。
至于为什么这里加个电阻,那里并个电容,为什么取值这个,先不用管。
实际产品开发中,这些工作都是由硬件工程师去完成的。
3.51单片机
有些人说51单片机过时了,淘汰了,这种直接当他是外行。
现在51单片机还在大量应用,哪怕你是接触到一些蓝牙产品,很多芯片都是51内核的,比如TI的CC。
我向你保证,如果51单片机能实现的功能,老板绝对不会允许你用STM32,哪怕让你用会编写,把你头发写掉光。
原因很简单,51单片机便宜啊!
4.用51单片机做项目
前面学的c语言、基础电路、51单片机都是知识工具而已。
学完就得把知识落地产生价值,而项目就是把这些知识产生价值的唯一途径。
很多人学完了基础知识,发现还是不会做项目,就在想是不是自己基础没学好啊?
其实不是,就像你学会了写字,但是还是不会写作文是一样的感觉。
想写出好作文,除了你的基础知识功底,还需要你有丰富的经历和思维对吧?
做项目就跟你写作文一样,也是考验你项目思维和经历了。
思维和经历好不好,会决定你的程序写得好不好。
很多人着急学STM32,把这最重要的一步给忽略了。
所以越往后缺失的东西越多,学起来自然也越费劲。
5.C语言进阶
很多人迷恋C语言指针,而我建议把指、结构体等一些高阶知识放在这个环节学习。
经过前面几个环节洗礼,你的代码水平和理解能力都提升了。
这个时候再去学习C语言高级技巧,时间成本会更低一些。
C语言进阶我们无际单片机系统开源教程,其中包括枚举、指针、结构体、回调函数、队列算法、任务管理等可以直接用于你批量产品的知识。
老规矩,在文章末尾看领取方法。
6.STM32单片机
终于来到新手梦寐以求的STM32了。
这个环节,我建议把STM32当作工具来学,就是知道怎么调库把外设用起来就行了。
没必要深入系统地学习,只需要学最常用的外设就行了,学完不用,很快你就忘了。
具体哪些是常用的,上面那个导图写得很清楚了。
7.STM32项目
如果你能坚持到这里,恭喜你,马上可以毕业了。
但是这个环节往往也是最难、最煎熬、最耗时的一步。
STM32项目某宝有一些DIY的项目,比如智能小车、无人机之类的,可以拿来练手。
不过,你能学到的可能也只是对编程的熟练度而已。
如果想学到更好的思维和编程技巧,可以无缝对接实际产品开发的。
最好还是跟着资深的工程师做项目。
三、总结
1.定位比课程本身更重要。
2.把大多数的时间精力放在项目实战上。
最后彩蛋时间,最近很多小伙伴找我要一些单片机学习资料,然后我根据自己从业十年经验,熬夜肝了几个通宵,精心整理一份「单片机入门到高级教程+工具包」,全部无偿共享给大家!!!可以找「无际单片机」,全网同名的.
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!