自学单片机难吗?单片机编程教学怎么选?
现在我们随便拿一个智能电子产品,不管是家里电器还是玩具,又或者是飞机大炮,基本都有单片机的应用。
市场需求大到让人发指,很多人以前完全不知道单片机是什么东西,自从接触到以后激发了强烈的兴趣。
每个男人心中都有一个”钢铁侠”梦,都希望自己能通过技术去改变世界。
不过,想要达到这种程度,我觉得要从小培养以外,还要异人的天赋才行。
这几年我看了很多大佬,能力超强,其实他们也是从零基础开始,我们碰到的问题他们当初也会碰到。
千万不要被电影误导,发一场烧就能成为天才,吃一颗大力丸就能改变基因。
要想成为大佬,自己必须一步一个脚印,从基础开始,以3、5、10年的周期去看,你能坚持下去肯定也是大佬。
到那个时候,你或许会到达另一个层次,物质已经不是你的追求了。
自学单片机也一样,技术最怕就是急功近利,这样你永远只能浮在表面,深入不到本质的东西。
典型的就是很多新手直接去学习stm32,因为stm32很多产品都在用,他们也天真地以为自己学会stm32就能做这些产品。
最后你浪费了1年时间也学不会,即便在开发板上学会了stm32,你依然做不出那些产品。
单片机对于我们这些老工程师来说,只是一个工具,stm32的定位是帮助工程师快速开发出产品而不是给新手入门的。
Stm32资源丰富,也很复杂,所以原厂提供固件库方便工程师快速把单片机资源用起来,不需要深入到寄存器配置。
如果你没学过51单片机,你可能连配置寄存器都没听过,虽然能把stm32外设用起来,但是脱离了固件库或者改成hal库了,你完全失去了开发能力,这就是典型的基础知识缺失。
而51单片机不同,你想用单片机的资源,对不起,你需要自己去配置芯片的寄存器。
这个时候你需要去查询芯片手册的寄存器说明,每个位置1和置0是什么意思。
虽然你只是在学习单片机,实际上你学到了很多附加的知识,比如说如何看数据手册。
这些都是作为一个单片机开发必备的技能。
一、自学单片机难吗?
我认为一点都不难,因为我做了这个行业10年,哈哈。
对很多人来说太难了,我们无际单片机编程最近有个刚毕业不久的学员,曾经自学了快2年都学不会。
还有一个零基础40多岁的学员,我们帮他一对一评测好基础,然后规划好学习路线以后,1个月就能独立开发很多程序了。
其中的差距在哪里?
我认为就是以下几点区别:
- 学习路径
我们的学习路径都是根据职业定位来规划的,不同的职业定位学习的内容也不同。
规划时我们会结合自己从业10年的经验,只学工作常用到的知识,用不到的绝对不去浪费时间。
很多自学者就是学习路径不清晰,因为他们连定位都不清晰。
举个例子,很多人只知道嵌入式,但是不知道嵌入式其实细分很多方向,比如说单片机开发、ARM+Linux开发、FPGA/DSP开发等等。
不同的方向对应不同的职位,学习的内容也是天差地别。
如果你连这个都搞不清楚,5年都学不会。
学技术不像学其他,错误的路你怎么磕磕碰碰都能碰到重点。
技术弯路太多了,稍微走错就是致命性的错误,比如说明明单片机开发不用学Linux,你跑去学,这就会浪费至少几个月时间。
如果每走一步你都这样错一下,5年学不会真的很正常。
2.学习过程没人指导
即便学习路径正确,自己学的话肯定也会走弯路。
举个例子,我们无际单片机编程有个学员学习的进度总是比别的学员慢一点,我就好奇他是怎么学的。
后面深入聊完,我发现他特别爱钻牛角尖,我们在学stm32的时候,一般是基于固件库开发,不需要去深入理解寄存器如何配置。
而他非要去研究,生怕自己研究不透,到时候出了问题不知道怎么解决。
如果你也这样去学,那学完自己都老了,我当初压根都没去系统学过stm32。
只是有一次有个新产品用stm32的单片机做,我就在网上买了开发板,已经是9年前了,那个时候开发板还没配视频教程的。
就配了每个外设的使用例程,然后我就把这些例程复制到自己产品工程里,改一下参数再测试一下。
比如说改IO口,改定时器中断频率,改ADC通道等等。
就是这样一步步测试出来的。
最后产品做出来了,对于stm32这个单片机的很多资源我也还是不知道怎么用的,但是产品照样也稳定。
后面慢慢基于stm32的产品做多了,对整个固件库也就很熟悉了,甚至能通过固件库学到面向对象的编程思维和技巧等等。
所以,我后面也总结了其实通过项目去学习stm32单片机是最快的。
通过开发板,即便外设你都用起来了,但是你根本不知道这些外设都能用在什么地方,一给你做项目你还是一脸懵逼。
二、单片机编程教学怎么选?
市面上也有很多关于单片机编程的培训,根据我个人经验来说大多数都比较鸡肋。
就是你学完能达到的程度就是开发板水平,这样还不如自己花个100多块买个开发板对着视频学,还节约一大笔费用。
我认为首先要了解学员的基本情况,我们无际单片机编程会为每个新学员进行基础的评测,评测内容也是我们这么多年总结工作中必备的基础知识。
比如说零基础的学员,那首先要学习c语言和硬件基础。
针对单片机的c语言教程我们也是开源的,大家可以找无际单片机编程拿,或者直接到小破站看,相对来说我们的教程更偏向实际开发。
学完c语言和电路基础再学习单片机,直接通过项目去学习。
虽然学习可能没开发板这么系统,但是学员目标很明确,也知道学习的知识实际用在什么场景,学完又有了项目经验为自己找工作做好铺垫,一举多得。
多做几个产品你基本对单片机都很熟悉了,即便有些资源没用过,你也知道怎么去把它用起来。
这种以实际项目驱动去学习的会更靠谱一些,也更契合企业需求。