从51单片机到STM32:遭遇的严重问题?

本人从事单片机开发10年,我一直认为只有起点和你差不多的人,经历过的路,才具备参考的价值。

别人开局就是一套终极装,在各种资源背景加持下经历像开挂一样,你参考个锤子啊。

我当初是电气工程转行到嵌入式单片机开发的,学历、数学英语啥的普通到不能再普通了。

我都能走通的路,相信大家也一定可以。

最近收到了很多新手的咨询,其中有一个学员的问题我认为还是比较普遍。

这个学员说自己跟着开发板看教程学习,外设基本学完了,但是发现脱离例程和教程的时候,自己把代码敲出来,编译出错后一脸懵逼,完全就是不知道怎么去解决这些问题。

还有就是关于外设的配置,不知道为什么要这样去配置。

后面我看他人也挺实诚,就深入聊了一下,发现他以前是做纯软件的,编程语言啥的有基础所以c语言也很快就掌握了。

他以为有了这些基础能直接从STM32开始学起,所以产生了后面这一系列的问题。

这就是典型的1级打boss。

我们无际单片机编程一直要求学员要从51单片机开始学起,很多新手总以为现在51已经过时了,STM32是主流。

在我们这些老工程师眼里,虽然主要是用单片机来开发产品,但是单片机对我们来说屁也不是。

从技术的角度来说,单片机本身没太大技术难度。

实际开发产品的时候,不同的产品选择的单片机都不一样,不可能你51单片机能实现的你去选择STM32。

还有很多单片机你可能听都没听过,所以你all in去死磕一款单片机没太大的意义,反而浪费你太多时间。

现在随便一款单片机,原厂的资料都很丰富了,所有外设资源的例程都会给你,还有配套文档+技术支持,初级工程师都能很快把他们的单片机用起来。

所以,新手其实重点是把单片机和基本协议(SPI、IIC、USART)基础打好,对单片机有一个系统的认识就行了,而不是一味地去追求性能强的芯片。

比如说你知道单片机外设用起来的原理,是通过配置寄存器去使用的。

其实你看不管是单片机还是别的芯片(LCD驱动芯片、Flash、DS1302等等)都是通过这种方式去使用芯片内部功能的。

51单片机基本是通过配置寄存器去使用它的外设的,而STM32根本不需要你接触寄存器,直接调用库函数就能把外设开起来。

两个芯片的开发存在比较大的差异,你用起来或许很爽,但是一出问题叫天天不应,叫地地不灵。

连排查问题的方向和入口你都找不到,更别说解决了。

这就是基础缺失导致你的知识体系是畸形的,你的理解永远是在应用层面,而不是核心的原理。

如果你用51单片机做过5,6个项目,再进阶到STM32,我相信完全是两种不同的体验,完全可以游刃有余。

因为做单片机开发核心的东西你基本也熟悉了,这里说的核心除了你单片机基础比较扎实以外,还有一个更重要的

就是你的项目思维代码整合能力,代码水平另说,水平不管好坏在51单片机面前都能实现产品功能。

这是非常重要的,如果现在让我去写纯软件的东西,我也能很快上手,因为你说一个功能我脑子里有个架构和实现功能的思路,剩下的就是学编程语言语法而已。

很多人搞不清状况啊,以为做单片机开发就是学单片机,这种活该你的工资低

只要你不去造单片机,单片机对你来说就是一个工具而已,你理解再深入和我只会复制例程把单片机用起来,做出来的产品有区别吗?

懂得人都知道没区别,真正区别应该是在于我们之间的算法和代码架构吧,这才是决定产品稳定的东西。

所以,这几年结合自己和以前带过徒弟的经验,我觉得学习单片机最靠谱的方法就是通过项目去学习。

现在无际单片机编程的学员也是以项目驱动去学习,虽然过程有点痛苦,但是坚持下去的收获都是巨大的。

这样你学习更有目的性,也知道学出来的东西有什么用,用在哪里。

还有一点最重要的,能培养你的项目思维和提升你的代码水平,这都是实际工作最需要的东西。

做它4,5个项目,基本就具备独立开发的能力了。

如果你通过开发板学习,即便给你学10个开发板,你还是一看就懂,一做就废!

开发板只是给我们学习单片机和调试用的,不能让你学成工程师。

2.最后总结

不知不觉啰嗦了这么多,反正我是不推荐直接从STM32学起。

技术要先稳扎稳打,把基础打好,借助基础你能更快起飞,记住:慢就是快

到目前为止也写了将近200篇纯原创行业经验了,实属不易,技术人贵在坚持,如果对你有帮助,麻烦给我安排个三连吧,感谢各位老铁!

物联沃分享整理
物联沃-IOTWORD物联网 » 从51单片机到STM32:遭遇的严重问题?

发表评论