1.单片机开发综述
一位资深嵌入式工程师分享职业发展心得,提出成为单片机高手的路径:需掌握C语言、数据结构、计算机组成等理论知识,以及数电模电等硬件基础。学习过程分为三个阶段:从外设驱动开发到模块组合,最终实现项目级代码编写。强调用面向对象思维解决C语言模块解耦问题,推荐RTThread操作系统。指出高级工程师需在底层优化、工程思维、行业认知等方面突破,从功能实现升级为打造稳定可量产的产品。文章旨在为行业新人提供成长
最近因为忽感接近35岁,回头一看,工作10年已过。做为一名普通的嵌入式工程师,已经接近职业生涯末期。所以决定写写文章,帮助将要进入这个行业或者在这个行业苦苦挣扎的童靴一点心得和建议。
一直以来,很多人肯定有个疑问,单片机有没有高手?
肯定有,并且很多。
那另外一个问题,怎么判定一个人是高手?或者如何成为高手?
这里说说我的愚见:调的越多,水平肯定越高,不存在越调越落后。所以同学们只要坚持,不断的练习,迟早,大家都是高手。😊。
那么,我们学习单片机需要哪些步骤呢?或者需要哪些理论支撑?
计算机理论知识:C语言,数据结构与算法(学到链表),计算机组成原理,操作系统,如果能看一些编译原理,那么更佳。我认为学习了这些,应该就够了。而且我不建议上来就敲代码,最好将这些书籍看个大概,找准方向。
硬件知识:数电,模电(学会三极管/MOS管/电源),主要是为了看懂原理图。单片机工程师一定要看懂原理图。
然后可以写代码了,那么我认为可以分几个阶段,第一个阶段,裸机阶段,如果在软件工程的术语,其实叫单元测试,就是将一个外设为单元,将驱动程序写出来。
第二个阶段,可以将多个外设模块组合起来。
C语言是面向过程的语言。前两个阶段,我认为只要同学们肯下功夫,学会只是时间问题。
实际开发项目的时候,我们也是一个模块一个模块调,掌握了上面两个阶段,同学们就可以做为初级工程师,为公司奉献自己的力量,独立工作了。老工程师只需要告诉你把哪个外设调通,你就框框一顿调,调完交给他。
那么,比较困难的第三个阶段要来了,那么如何独立搞定一个项目呢?
先熟悉业务,然后排列组合外设模块组合,理论上,项目也可以做出来,但是,这样的代码是无法用在项目中的。
那么一个程序要做到项目级的,需要满足的条件有哪些?
可读性与可理解性
模块化与拆分
可维护性与可扩展性
高内聚低耦合
可测试性
兼容性与可移植性
错误处理完备
正确性与健壮性
防御性编程
版本控制友好
是不是懵了?
那我们先不管这么多,我们先把高内聚低耦合,可维护/可扩展做到,其它的慢慢来。
那么C语言如何做到模块间解耦?有的同学可能知道:函数指针。
那么其实,需要用到的是面向对象的思维,为何c语言明明是面向过程的语言,非要在写代码时,做成面向对象的方式?
是因为我们做项目是根据业务去做,任何业务的特征,用面向对象的方式抽象描述,编写代码,会更简单且更容易维护。
我们把业务先做拆分,然后将一个一个模块抽象为一个对象。使用c语言中的结构体,将数据和对应的函数放到一块。这样我们写代码维护,找问题,都会变得容易(防止全局变量满天飞)。
所以,为何有的同学,买了块开发板,看了例程,还是不能胜任工作,开发板的例程只是带你进入这个行业,教会你单元测试😄。
具体的方法,后面我会专门出文章写如何编写项目级的代码。
那么什么时候用RTOS,什么时候不用?
这里暂时不说,项目大了肯定用RTOS,我喜欢用RTThread,面向对象的写法,并且有很多组件可以直接拿来用,很方便,快捷。

这是我随便用正点原子STM32H743的板子做的一个工程,里面实现了wifi,USB,网络(YT8256C lan8720),MQTT,lvgl,canopen,modbus等一些花里胡哨的功能。
电脑端ping开发板:
串口终端打印:

这里附上正点原子的板子图片,板子做的确实不错。

能做到这个程度,基本可以满足中级工程师的水准,那么如何成为高级工程师?
成为单片机高级工程师,核心是从 “能实现功能” 升级为 “能做出稳定、可靠、可量产、有市场竞争力的产品”,需在技术深度、工程思维、行业认知上全面突破。
1. 技术深度:从 “会用” 到 “精通底层与优化”
2. 工程思维:从 “实现功能” 到 “保障量产与稳定”
3. 行业认知:从 “埋头编码” 到 “对接市场与需求”
4. 解决问题:从 “排查表面错误” 到 “定位底层根源”
更多推荐



所有评论(0)