你点击蓝字关注,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞
文 | 无际(微信:2777492857)
全文约2020字,阅读大约需要 5 分钟
来聊聊我的经历,提供几个提升方向,亲测有效,希望能让你少走几年弯路。
10几年前,还没参加工作的时候,主要是玩玩开发板,也接触不到实际产品的代码,很好奇那些产品级的代码是怎样的。第一份工作,先是维护老产品, 一看公司产品的代码,其实跟开发板的差不多,有些代码可能还没开发板的工整,是用STC 51单片机的项目,代码也复杂不到哪去,能实现功能就行了。接着维护基于NXP ARM7单片机项目,相对就复杂很多了,复杂度主要体现在要自己配置寄存器,去使用单片机外设,还有整体功能多,组合起来看就有点云里雾里,不过从代码架构上,也是挺乱的。经过前面3,4年的磨炼,水平慢慢从维护,到能独立完成各种功能。其实就是接触多了,能在原有的功能上,懂得举一反三了。虽然能实现各种功能吧,但总觉得还是差那么点劲,就是总是感觉代码写得不够专业,又说不出来哪里不专业。大概在工作到第4年左右,自身也有经验了,跳槽也有更多的选择,能进一些项目相对复杂点的公司了。从那个时候,自己的认知,确实被一些大佬写的代码颠覆过几次,原来单片机的代码还能这样写? 就像很多无际项目特训营的老铁,系统学习我们项目后,也会被颠覆原有的认知一样。并不是说有多复杂,或者多高深的技术,而是每个人写代码的思维,确实不一样。你接触到的产品代码,可能是上一任工程师,积累了很多年,一次次迭代出来的版本。所以为什么工作以后,能力提升才比较快,这是其中一个因素,直接能学到别人积累几年的东西。不过这个也要看机遇和选择,也有可能工作10年也碰不到。后面我也找到了代码提升的方向,就是实现功能的同时,怎么把代码写得扩展性和移植性更高一点,再是整体程序架构的设计,能做到这一步,基本就能独立开发各种项目了。有人带,能接触到好项目,又有学习意识的话,其实也很快,大概2-4年左右。
可以按照顺序,把我说的这3套程序搞明白,编程思维和水平基本就到天花板了,哪怕没到,去做任何项目都没问题。最多就是不同的行业,可能涉及到行业的专业知识和算法,这个可能还要针对性学习下。第一,STM32固件库,学习他们面向对象的编程思维,学习代码的封装方法,对模块化编程思维帮助很大。第二,无际单片机那套程序架构教程,熟悉c语言"三板斧":枚举、结构体、指针的实际应用,初步学习系统的一些原理,比如任务管理,队列,以及用这些对实际项目有什么帮助等等。这套教程在小破招找无际单片机编程,就可以看,没什么套路。第三,学习OSAL系统,这个是TI蓝牙协议栈的事件型驱动系统,也能适用于别的单片机,之前我做过几款蓝牙产品,对系统挖的比较深,然后按照他们的设计思路,经过剪裁改编,用于后面的STM32项目上。 能把以上3套架构吃透,我觉得水平已经可以吊打大多数有10年开发水平的工程师了。第四,RTOS,如果OSAL系统都不能满足你了,下一步可以深入研究,或者把前面两个系统,加上现场切换和优先级管理,改变成更加精简的RTOS。不过,如果你有前面三个架构的经验积累,RTOS对你来说,就是小菜一碟,也就是1-2周学会的事。以上4个方向,需要有一定开发经验的人去学习,否则看不出里面的门道和精华。1.学校学习的目的,是为了通过考试,工作学习的目的,是解决业务需求。编程的能力不在于,你对这门语言语法背诵,以及几个数据结构和算法的记忆。在实际工作中,更多在于怎么设计架构,怎么组织整合代码。语法是可以百度的,单片机外设例程原厂/代理商也会提供,你只需要知道怎么调用修改。工作后,见过鬼,怕黑了,不想再装逼秀技术了,只想快点完成任务,有现成代码可以抄,我觉得贼幸福,领导和甲方,大概是魔鬼。所以后面我写了通用程序架构,换了项目直接移植,修改。目前我们特训营项目就用这些架构。4.除了技术,你还要考虑业务知识、测试、质量、生产效率和可持续性。5.学校学的也有用,但是理论和实践之间,有巨大的鸿沟,要趁早多做点实际项目,培养经验和工程感。6.工作前几年,能从头到尾,让你完整做一个项目的机会,其实并不多。end
下面是更多无际原创的个人成长经历、行业经验、技术干货。
1.电子工程师是怎样的成长之路?10年5000字总结
2.如何快速看懂别人的代码和思维
3.单片机开发项目全局变量太多怎么管理?
4.C语言开发单片机为什么大多数都采用全局变量的形式?
5.单片机怎么实现模块化编程?实用程度让人发指!
6.c语言回调函数的使用及实际作用详解
7.手把手教你c语言队列实现代码,通俗易懂超详细!
8.c语言指针用法详解,通俗易懂超详细!