STM8框架使用指引

一、概述

      编写该框架是为了避免一个很尴尬的情况:一个公司几位工程师,每位工程师看似合作,但提交的代码却是框架各异、风格迥然,你看我的代码别扭,我看你的代码费神……这些都增加了沟通成本、出错成本,不利于项目维护和传承。新接手的工程师看到一堆充满异域风情的代码时,可能会仰望天空45°留下入错行的悔恨泪水……

       该框架的最上层使用lw_oopc构建,使C语言具备了面向对象的能力,亲测效果很好,易用性、可移植性、可阅读性都很好。希望大家一起努力,沉淀出一套简洁的、稳定的、充满活力的框架,有了一个稳定的基础,妈妈再也不用担心一些无脑的bug了~

 

二、组织架构

STM8框架使用指引

       如上图,以ST官方驱动包为基础,构建基础驱动包,两者都是通用型驱动;然后再以两者为基础构建应用驱动,应用驱动基本是针对具体器件量身定做的,属于专用型驱动;应用框架比较简单,不多说。随着驱动的不断完善,不断沉淀,最终底层bug将趋近于无,我们的工作重心放在功能逻辑层面即可,到达这个状态后底层驱动会被屏蔽,接触最多的是应用驱动, 所以应用驱动务必接口清晰,调用方便,也因为这个原因,我们只在这一层引入了”轻量级面对对象C语言编程”,即lw_oopc,想了解更多可参阅<<UML+OOPC嵌入式C语言开发精讲>>。

      文件结构如下,AppDrive和BaseDrive前面有说;Documents是用于存放应用文档,如使用指引,API文档等等;User用于存放项目文件、功能逻辑等;readme用于存放版本更新说明,应用到具体项目中时就是对应项目的版本说明。

STM8框架使用指引

三、框架程序介绍

  利用定时器建立的一个普通的时间片轮询机制,分成了高速、中速、低速轮询区,目的是提供基本的计时单位,同时减少MCU空转。

STM8框架使用指引

四、应用层驱动举例

      如下,为简单的按键驱动Demo,头文件中给出了清晰的接口函数和相关变量,调用该驱动时只要创建对象就可以直接使用,与上层应用的耦合度非常低,真正做到了高内聚、低耦合。

STM8框架使用指引

 

      Key驱动使用。

      第1步:创建对象指针。不要觉得很奇怪,C语言的面向对象是建立在结构体和指针的基础上的。

STM8框架使用指引

       第2步:创建对象并调用其初始化成员函数。初始化不是必须的,但一般都需要有,毕竟成员变量啥的都要处理呀。

STM8框架使用指引

        第3步:调用成员函数。对应按键的键值可在成员变量中获取。

 

     STM8框架使用指引  

      下面成员函数Scan的源码。

      STM8框架使用指引

      下面是按键处理函数keyProcess()源码。

      STM8框架使用指引

      看到这,有的小伙伴很疑惑:什么鬼的清晰明了,最基本的按键IO的定义都没有啊?看下key.c文件就会发现,IO定义等均放在该文件最前面的位置,可根据具体项目进行调整,这也高内聚、低耦合的一个体现,不需要暴露出来的绝不暴露,我们走的是清纯路线~

五、API说明

       这个需要等框架完善稳定后再整理了,而且大家都是工程师,直接看代码和注释也是非常OK的! 会不会惊喜的发现,代码注释也很清晰呢~