最近收到了很多新手的咨询,其中有一个学员的问题我认为还是比较普遍。
这个学员说自己跟着开发板看教程学习,外设基本学完了,但是发现脱离例程和教程的时候,自己把代码敲出来,编译出错后一脸懵逼,完全就是不知道怎么去解决这些问题。
还有就是关于外设的配置,不知道为什么要这样去配置。
后面我看他人也挺实诚,就深入聊了一下,发现他以前是做纯软件的,编程语言啥的有基础所以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学起。
技术要先稳扎稳打,把基础打好,借助基础你能更快起飞,记住:慢就是快!
暂无评论