大家好我是小火,想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。很多入门的初学者还不知道架构的意义,但是从业者就了解架构所带来的好处。

打开网易新闻 查看精彩图片

工作和我们在学校学习是两种不同的概念,在学校大把的时间可以任意让你挥霍,但是在工作中老板只会不断的去压榨你的时间,所以我们作为从业者为了让自己有时间做自己的事,接点私活搞点创收,有一个好的架构设计就很重要了。

我们设计的架构首先要应用代码逻辑清晰、避免代码重复做无效的工作;代码尽量写得通用一些,方便以后我们进行软件的移植;一些特殊的功能进行分割独立出来,方便二次使用,最大限度的做到不需要改修大量的代码就可以重复的使用,利用好构架以及规则进行开发,可以在开发时间、开发成本、生产的效率和产品质量都会得到不错的反馈。

我们可以把总体的构架分为应用层,业务逻辑层、功能模块层和硬件抽象层,把它们分别归类。

应用层作为我们程序总体的运行框架,它主要负责组织、整合、调用业务逻辑完成产品整体功能:使用实时操作系统 ( FreeRTOS、μClinux、μC/OS-II) 实现多种任务,如按键任务、显示任务、通信任务、系统自检任务、心跳任务、数据采集任务、定时任务等等。

业务逻辑层 通过调用应用接口层API接口实现产品的各个业务功能,如:通信收发业务;按键事件业务;系统自检业务;线程守护业务;用户GUI业务等等。功能模块层 封装实现具体功能的子模块,如按键触发模组;储存读写模组;数据采集模组;显示操作模组;系统心跳模组;串口收发模组。

硬件抽象层 分成两个部分STM32片内外设驱动( GPIO、USART、RCC、I2C、ADC、SPI、etc )和外设底层驱动( Screen font library、Sensor I2C / SPI read and write )

有了结构我们还要制定一个规则,俗话说得好无规矩不成方圆。在命名上文件名需要增加对应的前缀。api接口要以一个规则来命名。

在调用的时候同一级别的层相互独立,要做到互不关联、互不影响、互不干扰,代码不能相互调用,只能调用下层的接口;各个层级之间是不能够跨层调用。功能模块层的代码不能直接调用业务逻辑层的代码,它只能调用封装的子模块。

每次要新增一个接口,就需要在文件头备注好功能状态、文件的编程者、版本信息等等方便以后的维护;新增接口程序在要求上要与整体规则统一,后面只能进行增加,不能进行修改也不能进行删除。

本期先分享到这里,想要学习单片机编程的同学可以持续关注小火,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!