在我即将毕业的那年,我一直很羡慕学校学计算机专业的同学。
他们的未来充满了前景,工作几年拿个几万块,而且上限也高,工作环境又好,听起来还有逼格,毕竟搞高新技术的。
而我学的是电气工程,当初完全是感觉工程牛逼,才选的这个专业(其实分数低也没太多选择)。
学了1年以后学校把我整个系强制转成电梯专业,在未来的几年,都跟轿厢、轿门、电机、机房打交道。
临近毕业我才知道这个职位有多卑微和苦逼,工资低、责任大、24小时待命就够我受的了。
细思极恐,花了这么多青春,浪费了这么钱,最后出来去做这种工作,如何面对自己?如何对得起父母辛勤付出?
后面在所有人都不看好的情况下我自学了单片机,并成功转行。
自学和后面的求职之路都非常坎坷,简直就是生理和心理的巨大考验,中间省略1万字,毕竟我的个人经历不是今天的主题,有兴趣的可以多看我的文章了解。
到今天为止,我从事单片机开发正好10年,有很多最有建设性的经验想分享给各位初学者。
但是我在此之前,我先给各位提个醒。
我看过非常多写单片机入门的文章,如果真的按照他们写的学习,你将会走的弯路可以绕地球一圈了。
庆幸的是,10年前我在自学的时候,互联网没这么发达,信息没现在这么泛滥,所以我从零到找到工作也就几个月的时间。
下面是我10年前记录在blog里的一些学习笔记。
男人,我觉得千万不要把魄力这个优点丢弃。
我经常会碰到一些小伙伴的咨询,说自己不是这个专业的、没学历、都26岁了能学会并且从事这个行业吗?
我想说的是,只要你想,那就把这些给你带来负面情绪的词从你大脑删除。
人最擅长的就是自己吓自己,其实都是为了逃避烧脑的借口而已。
先干起来比想什么都强,如果你不确定,我就是一个很典型的例子,我能做到的,你也一定能!
学好单片机编程,从头到尾,我觉得都没那么难。
当我工作了10年,做过的产品至少在30个以上以后,我悟到了更快学会单片机的秘诀。
大家拿笔记住以下公式:
正确的学习路径+不断实践
一、正确的学习路径
正确的学习路径非常非常重要!方向都是错的,努力有个屁用!
为什么每个人学习的周期不一样,其实并不是谁比谁智商高,而是谁的学习路径更接近结果的区别。
就像最近我们无际单片机编程一个40多岁的学员,之前自己一直摸索,搞了很久连单片机是怎么回事都搞不明白。
后面经过我们一对一指导,1个多月都能开始做项目了,后面一些指针、回调函数基本也能搞懂。
所以,新手宁愿花1周甚至半个月去规划系统学习路线,也不要像无头苍蝇这样盲目学习。
下面,我从整体框架上跟大家聊下大体的学习路径,也就是做单片机开发必学的一些知识点。
基础电路
单片机必须配合电路,然后通过电路控制逻辑写程序,最终才能完成产品功能。
所以想写程序必须要看得懂电路,学习电路的时候千万不要系统学习模拟电路。
一般人很难学得懂,学到负反馈放大电路就差不多了,其他你不去做芯片做模块基本很少用得到。
2.c语言
单片机支持汇编和c两种语言编写程序,汇编我做了10年产品开发基本没用到,所以主力学c语言。
那针对单片机c语言需要学哪些内容,我们也有专门的视频教程。
想要的可以到无际单片机编程找我们拿。
3.单片机
虽然现在stm32很流行,但是希望新手能从51开始学起。
51的难度指数更适合新手入门,开发模式也更底层(配置寄存器)。
Stm32的定位是做应用,也就是芯片原厂会提供固件库给你,调用他们的函数就能把资源用起来,不用配置寄存器。
如果直接学stm32可能会导致你的基础缺失。
更具体的学习路径可以参考我下面这篇文章,这里就不再阐述了。
链接1
二、不断实践
对于不断实践,我分为两个阶段:
1.开发板阶段
开发板阶段主要是学习单片机外设的使用,就是怎么把单片机所有资源都用起来。
2.项目阶段
经过开发板阶段以后,你基本已经入门了,下一步就是培养你的产品功能实现思路和提升代码水平。
很多人学完开发板阶段,又直接晋升到更高级的开发板继续学习,比如说从51到stm32开发板。
这就导致,不管你怎么学,一做项目,都无从下手。
你缺的根本不是单片机的使用,而是我上面说的产品思维和代码水平。
这个只能通过项目去提高,那去哪里找这种项目?
我的首选建议是找个资深的人带你,因为他的经验和技术都在你认知范围之外,只有学习这些你才能真正快速提高。
还有就是可以通过网上找一些DIY套件的项目,比如说寻迹小车、电子游戏机之类的。
这种的缺点是即使你把功能实现,但代码水平和思路依然处于你的认知水平,也就是新手水平。
但是离实际产品的代码架构和功能实现方法或许还有挺大差别。
但是总归比你什么都不做要好。
以上就是我的精华总结,也是我认为学好单片机的基础,大家可以参考。