今天看到了一个提问,原话如下:
这个问题,我能装逼。
曾经干了10年单片机工程师,对工程师从入门,到入行,再到普通,再到高级,整个路径还算清晰,比如什么阶段,会碰到什么瓶颈,怎么突破,我都经历过。
这个同学,有个典型的问题,就是学得太多且杂了,估计稍微复杂点的项目,做不出来。
现在首要任务,就是做减法。
先定位好,自己想往哪个方向发展,放弃一切与这个方向无关的技术,深入学习。
假设,你想往单片机方向,目前学完了STM32,能做出各种小玩意。
那接下来的目标,是往程序架构和可靠性设计方向发展,实现功能的同时要考虑功能扩展性,还有移植性,这是成为高级工程师必须要攻破的瓶颈。
如果你对扩展性和移植性的概念有些模糊,抽象。
我举个例子:
比如STM32的固件库,有没有发现扩展起来很方便?移植性就更不用说了,一个库能兼容很多个型号的单片机。
那程序架构是什么?
比如RTOS,我的理解就是一个实时性很高的程序架构,一般像这种系统,就是整个产品代码的"地基"。
没必要去研究STM32内部,对技术成长帮助不大,会用单片机和精通单片机内部,对产品开发来说,差异甚微。
很多人在这个阶段,可能会冲RTOS,我的经验是,别冲,现阶段不适合!
RTOS什么时候冲我认为最合适?
就是你自己能设计整个程序架构的时候,比如我设计过"毛坯版本"的轮询任务架构。
在2019年的时候,还专门录制了一套关于这个架构的教程,在小破站,同名无际单片机编程,有兴趣的可以自己去看。
还做过定时器矩阵的小架构。
还有一些队列,链表之类的数据结构和小算法。
当然,更复杂点的事件型驱动架构我也玩过。
能学到这个程度,再去冲RTOS,小菜一碟,因为很多原理,和RTOS很像。
但能学到这个程度,很不容易,虽然也是半桶水,也花了我10年的时间,才积累出来。
我们把毕生所学,比如高扩展性、高移植性的架构设计,都集中到无际项目特训营的《4G&WiFi报警主机》项目上了。
如果能到这个阶段,你已经具备产品架构的设计能力了,RTOS对你来说,可有可无。
大多数单片机项目,"毛坯版本"的轮询任务架构完全够用。
曾经有几个人问过我,轮询的怎么规避实时性的问题。
我说我比较LOW,都是靠经验去人为规避的。
我没碰到过,非要上RTOS这种系统才能做的项目,对我来说,非刚需,上了也是累赘。
在刚做开发的时候,有一个毛病,明明可以不用指针,非要用,感觉不用代码显得不专业。
其实根本没有明白指针的精髓所在,只是为了装逼而用。
等我接触到一些复杂项目的时候,有些细节不知道怎么处理。
比如有个.c文件代码是要保密,要封库,不能给别人看到源代码,但又要给别人使用该代码的功能。
比如.c文件解析一帧协议,解析过程代码,不能开源,但最终的解析结果,要提供给使用者。
这种需求下面,怎么写最好?
就是用回调函数。
我是通过WiFi模块厂家提供的代码,摸索出来的。
如果没有这种实际应用,靠网上搜集对回调函数概念的解释,压根就不能理解它能解决的痛点。
所以,学完单片机以后,最好的成长路径,就是不断找项目做,从简单到复杂,逐渐提升编程思维和代码水平。
当编程经验丰富了以后,再学队列,链表,RTOS之类的,会事半功倍。
不管数据结构也好,算法也好,什么时候学,什么时候用?
我就一个原则:真正只有它,才能更好解决痛点的时候。
否则,代码写得越简单,越好理解,越好。
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》