简单的单片机项目需要分层设计吗?

科技   2024-07-31 19:28   广东  

有小伙伴说:我一个很简单的单片机项目,就点个灯,一个AD采集并通过串口传输一下数据,这还需要分层设计吗?

这个问题,其实没有标准答案,你可以不用分层设计,也可以分层设计,这取决于你,或你们公司对软件的要求。


当然,作为工作十年有余的过来人,我的建议:能采用分层设计,尽量分层设计。


分层设计的好处

这么说吧,小项目不分层设计也没问题,但你想一辈子只做这么简单的“点灯”小项目吗?


当你今后项目做大了,你就知道分层设计会有很多好处了。


1、模块化:分层设计可以让软件被划分为不同的逻辑或功能模块,每个模块都负责一组相对独立的任务,这样做可以提高了代码的模块化和重用性


2、易于维护:当系统需要修改或扩展时,分层设计使开发者可以专注于修改或添加特定层的功能,而不需要深入了解整个系统的内部细节,这降低了维护的复杂度和成本


3、提高可读性:清晰的层次结构使得代码更加容易理解和阅读,尤其是对于新加入项目的开发者来说(不要相信网上的段子,代码越乱才不会被人替代)


4、增强可测试性:分层设计有助于实现单元测试或集成测试,因为你可以独立地测试每一层的功能,而不需要运行整个系统。


所以,为了提升自己,准确的说,为了今后能做大项目,挣大钱,单片机项目很有必要分层设计。

常见的分层结构

我们在很多地方都会看到分层的架构,比如类似下图这样的:


当然,我们在单片机软件设计中,常见的分层结构可能包括:


1、硬件抽象层(HAL):负责与硬件直接交互,提供对硬件设备的抽象访问,如GPIO、ADC、UART等。


2、驱动层:建立在HAL之上,提供更高层次的接口来操作硬件设备,例如具体的传感器或外设的驱动程序。


3、业务逻辑层:处理应用程序的核心业务逻辑,如数据处理、算法实现等。

接口层(或称为通信层):负责与其他设备或系统的通信,如通过串口、I2C、SPI等协议与其他单片机或上位机通信。


4、应用层:面向用户或用户的程序,直接响应用户的操作或请求,如控制LED灯的闪烁、读取传感器的数据等。


最后

虽然单片机软件设计是否需要分层,没有标准的答案。但分层设计通常是一种值得推荐的做法,特别是在处理复杂、大型的项目时,它能够提高代码的可维护性、可读性和可扩展性,同时也便于团队协作和测试。


然而,在实际项目中,开发者应根据具体需求灵活选择是否采用分层设计,并合理设计各层的边界和接口。



推荐阅读

智能手环动不动上千上百元,自己用单片机整一个!
拆解13块钱一个的蓝牙音响还有钱赚,牛逼~
俄罗斯武器仍在大量使用美国芯片
小米手环9运动监测出bug了?一天没动消耗400多大卡

【关注】查看往期精彩

免费申请开发板和书


EDN电子技术设计
为电子工程师提供前沿电子行业资讯、电子技术干货、设计实例与应用方案
 最新文章