• 我们用STM32开发时为什么要使用架构


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

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

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

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

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

    业务逻辑层 通过调用应用接口层API接口实现产品的各个业务功能,如:通信收发业务;按键事件业务;系统自检业务;线程守护业务;用户GUI业务等等。

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

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

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

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

    业务逻辑层 通过调用应用接口层API接口实现产品的各个业务功能,如:通信收发业务;按键事件业务;系统自检业务;线程守护业务;用户GUI业务等等。

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

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

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

    应用层作为我们程序总体的运行框架,它主要负责组织、整合、调用业务逻辑完成产品整体功能:使用实时操作系统 ( 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接口要以一个规则来命名。

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

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

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

    网盘免费资料包,请放心领取:嵌入式物联网 22个STM32项目、大赛作品【华清远见发放资料包】http://makerschool.mikecrm.com/f4wjYBB

     

  • 相关阅读:
    chrome高级调试技巧总结
    Spring boot项目集成security
    web课程设计网页规划与设计----公司官网带轮播图 (页面精美 1页)
    【Learning eBPF-3】一个 eBPF 程序的深入剖析
    Go语言基础之基本语法
    关于vue ui图形化界面中创建项目时卡住的问题
    【高等数学】微分中值定理
    Cannot read property ‘pickAlgorithm‘ of null
    MySQL按天/周/月/季度/半年/年统计数据
    Vue 路由 使用
  • 原文地址:https://blog.csdn.net/an520_/article/details/125601269