跳过51单片机,直接学STM32有什么严重后果
STM32现在之所以这么普及,主要是教程资料非常丰富,一些卖开发板做教程的至少有50%的功劳。
再价格也算合理,导致很多企业用这个单片机去做产品,初学者也更渴望掌握这款芯片。
不过STM32这两年涨价太狠,很多公司采用国产芯片替代了。
我刚接触单片机是在2011年,当时STM32还没现在这么普及。
买开发板就只有例程,还没视频教程。
不然,我也可能直接从STM32开始学了。
人都是浮躁的,总想用最短的时间,学最复杂的东西。
就像我以前去买开发板,明明标配的可能都搞不完,偏偏喜欢上高配。
高配的看起来能做的功能更牛逼,也更接近市面上一些高端产品的功能。
其实买回来,大多数都是丢在一遍吃灰了。
我对陌生的东西,思维还是很古板的,把小白的特性体现的淋漓尽致。
我喜欢从简单的,通俗的入手,系统化地去学习。
如果你认为自己天赋异禀,可以直接学STM32。
但大多数人都是普通人,按照我的路径学习,不敢说快,至少坚持下去肯定是能学会,也能很快达到我的水平。
高手的成长过程可能很牛逼,但并不定适合你。
但是我经历过的路,一定适合大多数人。
我建议新手还是先从51单片机开始学习,不要一上来就打Boss。
前段时间收到了几个小伙伴咨询问题。
他以前是做后端开发的,最近学了STM32,学得很迷茫,改别人的例程用keil编译的时候出现一堆问题,解决起来无从下手。
有些外设虽然也能用起来,但总感觉把控不住,不知道单片机里面具体是怎么工作的。
这就是典型的越级了,学了超出自己认知范围外的东西。
STM32的定位应该是缩短工程师的开发周期,而不是给入门者学习单片机用的。
所以,ST官方提供了一系列便利的支持,比如说固件库,还有图形化配置的STM32CubeMX。
相当于,你可以完全不需要关心STM32寄存器,甚至连数据手册都不用看,就能直接调用库函数把外设用起来。
相反,51单片机则没那么便利,需要你手动去配置寄存器把外设用起来。
这个过程你能同步学习到一些工程师必备的东西,比如说单片机工作原理,内部结构,看数据手册等等。
特别是看数据手册,如果你一点都不懂,后续你用STM32开发项目也会有大量莫名其妙的问题。
就是找不到北那种感觉,可能问题都不知道是什么,更别说解决了。
任何一款基于单片机的产品,99%都需要看一些外围电路的器件数据手册,不然你怎么知道如何去使用它?
看起来,你是走了捷径,节省了学习51单片机的时间,实际上你所花的时间可能更长。
浪费几个月,又可能又要从头开始学。
新手刚入门,也不一定非得从51单片机开始学习,主要是资源少一点的就行,只不过51单片机最经典。
那你通过stm8去学习也是可以的,外设也没多少个,至少用配置寄存器的方式去开发还能把控得住。
Stm32内部还是比较复杂的,外设寄存器又多。
对于新手来说不是一个很好的选择,本来你可以学会的,因为学习顺序不对导致放弃就可惜了。
除了学习顺序,学习方法和深度都是不同的。
51单片机一般是需要系统学习,熟悉每个外设对应的寄存器配置。
而STM32我几乎没看过多少次数据手册,直接调库把外设用起来就行。
很多东西,你现在理解起来很难,等你经验积累的差不多了,自然而然就领悟了,不需要刻意去学习。
比如看STM32的数据手册,哪怕是看中文的,很多寄存器干嘛用的,你完全看不懂的。
拿我自己为例子,说出来有点讽刺,但是很真实。
我英语水平很差,我是怎么看英文数据手册的,是根据我的经验去猜测和理解数据手册。
我相信,像我这样的工程师应该不在少数。
因为用多了,看多了,很多核心的参数都是相同的。
学STM32也是一样的,想通过数据手册去学单片机简直就是噩梦。
正确的方法,不管三七二十一,哪怕复制例程,我把外设先用起来看看效果再说。
总比看枯燥数据手册有趣多了,用起来了再尝试去改一些参数,改引脚,改定时时间,改通道…
等你把STM32固件库用熟了,发现某个外设的结构体成员对应正好也是对应某个寄存器。
这个时候再针对性去研究对应的寄存器,就会好理解很多。
一般上了STM32这种级别的单片机,通过项目去学习是最快的。
假设在此之前,你已经学过别的单片机了,那这个时候对你最有价值的不是学会STM32。
而是能做项目的能力,从专业术语来说就是项目思维和编程水平。
单纯从开发板上学习,只能学会单片机这个工具,学完你会发现还是不会做项目。
这也是无际单片机编程让学员以项目驱动学习的原因,我自己就是通过项目学会STM32的。
对于不能落地的东西,不管是知识还是想法,都是在消耗时间。