单片机固件开发,有必要用到设计模式?

张开发
2026/5/4 1:14:14 15 分钟阅读
单片机固件开发,有必要用到设计模式?
关注星标公众号不错过精彩内容来源 | 工程师进阶笔记在单片机固件开发圈子里面有一个根深蒂固的观念设计模式是面向对象语言的“炫技操作”跟资源有限逻辑直接的单片机根本不搭压根扯不上边。但架不住现在的物联网/新能源汽车/工业控制等领域的产品业务逻辑卷得越来越凶狠单片机固件开发早就不是当年那种“裸机循环走天下”的模式了。多平台协同跨平台移植这些已经成了常规操作设计模式在单片机软件解耦和模块复用方面的优势已经不断显现。至于单片机固件开发有没有必要用到设计模式核心就一句话看项目规模和需求不要盲目跟风也不要否定一刀切。设计模式的最大特点是“软件解耦、模块复用、容易维护”刚好戳中了传统单片机固件开发的弊端痛点以前的单片机工程师在写固件代码的时候都喜欢走野路子一上来就是“裸机循环全局变量满天飞”业务逻辑和硬件操作耦合乱缠得像一团麻花然后在后期维护或者迭代的时候堪称“大型拆弹现场”。不管是换单片机芯片还是加一个小功能或者是换一个硬件模块都得去动核心代码不仅费劲儿还容易新增各种各样的bug。然而在使用了设计模式之后相当于使用了现成的“标准化套路”能在单片机有限的资源里面把代码的架构和模块接口捋的明明白白的。有时候大伙不必被“单片机资源有限”的固有认知绑住了手脚单片机的RAM和ROM就这么点儿过度设计确实会增加硬件负担但根据实际的项目应用选对轻量级的设计模式反而能够反向优化资源。比如单例模式对于UART、SPI、IIC这些全局独一的硬件通信接口使用单例模式可以锁死硬件外设的唯一初始化防止多次重复避免资源争抢的尴尬局面。单例模式可以阅读这篇文章嵌入式 C 语言设计模式 --- 单例模式在遇到复杂场景的时候比如多模块协同使用观察者模式的订阅通知机制可以完美实现事件解耦新增模块也不用动原来的代码直接拉满扩展性。又比如在适配不同传感器硬件的时候工厂模式就能派上用场新增传感器型号只需要修改扩展逻辑上层的应用代码基本不用修改。工厂模式可以阅读以下文章嵌入式 C 语言设计模式 --- 关于工厂模式的总结当然了在编写单片机固件代码的时候也别陷入了“为用而用”的怪圈根据实际的项目需求进行选择才是王道就像控制按键或LED这类小需求几十行代码就能搞定如果硬套设计模式那纯属多此一举。但是如果是团队协作开发要进行跨平台移植或者是计划长期迭代的项目那就建议使用设计模式既能统一代码风格减少开发者之间的沟通成本又能屏蔽硬件差异方便不同平台之间的移植。关于C语言设计模式可以阅读以下文章嵌入式 C 语言设计模式在单片机固件开发里面设计模式并什么什么“花架子”也没有必要过度“神化”设计模式只是一种经过实战检验的工具经验没有必要死磕语法进行堆砌。就算是单片机C语言开发使用结构体和函数指针这些特性就能够把设计模式的核心思想应用起来。关键还是需要守住“按需设计”的底线小项目使用简单的模式就能搞定大项目靠组合模式能搭建稳定的架构在硬件性能、资源占用、可维护性之间找到一个最优解。总的来说单片机不是不能用设计模式而是不能盲目跟风乱套等业务逻辑的复杂度上来了设计模式所带来的各种优势远比它所占用的那点硬件资源香得多。让产品的软件从“能跑就行”升级到“好用易扩展”这也是嵌入式软件工程师从入门到进阶的必备技能点之一-END-利用QE工具10分钟搭建一个基于MCU触摸工程当嵌入式遇上边缘AI这场大会藏着你不知道的“智能密码”智元机器人D1模型如何真正接入仿真

更多文章