跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
取样电阻捷比信 · 专业器件主题站

单片机常用的接口适配器模式的C语言实现

前言一般来说,适配器模式是将类的接口转换为客户所需的另一个接口。当我们编写程序时,尤其是当我们将单片机用于项目时,通常会使用它。但是通常当我们做项目和编写程序时,我们并没有那么想。如果我们希望整个框架在没有操作系统的情况下易于移植和理解,那么我们确实需要考虑如何编写此设计模式。 。让我根据自己的项目经验谈谈适用于单片机的接口适配器模式的实现。不要打扰我,请向我展示很多。总体实现当我们在进行项目的总体实现时,我们可以编写如下代码// FileName:test.c //来源:Official Account [技术使梦想成真] #include #include“ ExternModule.h” int main( void){/ *初始化* / vAllInit(); while(1){/ *项目逻辑* / vLogicModule1(); vLogicModule2(); }}在其外部文件中,调用相应的初始化函数和逻辑函数,但是当我们的项目非常复杂并且逻辑关系也被逐层覆盖和交替时,这种编写方式就不是很好。首先,我们仍然必须定义接口适配器的数据结构。通常,这样的项目分为以下步骤:初始化输入,处理输出并封装这四个步骤,然后定义数据结构,如下所示:// FileName:test1.c //来源:Official Account [Technology使梦想更大] / *适配器类型定义* / struct _ADAPTER {void(* Init& nbsp;& nbsp;& nbsp;& nbsp;)(void() //初始化函数void(* Input& nbsp;& nbsp;& nbsp;)(void); //输入转换函数void(* Process& nbsp;)(void); //处理函数void(* Output& nbsp;& nbsp;)(void); //输出转换函数); typedef struct _ADAPTER适配器;然后初始化Function,让我们首先这样定义它:// FileName:test1.c //来源:Official Account [技术成就梦想] / *模块初始化* / void moduleInit(& napsp; ADAPTER& nbsp; * module){ if(module-& gt; Init& nbsp;!= NULL){module-& gt; Init(); }}模块的逻辑操作,我们可以像这样使用它//文件名:test1.c //来源:官方帐户[技术使梦想成真] / *模块逻辑运行* / void moduleRun(ADAPTER * module){/ /模块输入适配接口不为空,则执行输入适配操作if(module-& gt; Input!= NULL){module-> Input();} //模块处理接口不为空,然后执行处理操作//模块输出适配接口不为空,然后执行输出适配操作}在定义了这些数据结构和封装之后,我们只需要在每个子模块中调用此模式就可以了。例如,存在需要点亮灯的要求。我们创建一个单独的文件,并在文件中声明//文件名:led.c //来源:官方帐户[技术成就更大梦想] / * led灯操作* / ADAPTER& LedModule& nbsp; =  {  vLedInit,NULL,  vLedRunModule,NULL};然后只需要描述初始化函数和逻辑运算函数。同样,我们需要按钮的功能并应用到另一个单独的文件中// FileName:key.c //来源:Official Account [技术使梦想成真] / *按钮操作* / ADAPTER& nbsp; KeyModule& nbsp ; =  {& nbsp; vKeyInit,NULL,& nbsp; vKeyRunModule,NULL};这样,我们可以方便地拆分需求,方便移植,并且程序是模块化的。最后,我们在主文件中所做的就是调用这些函数。我们需要这样做。 //文件名:main.c //来源:官方帐户[技术成就梦想] / *主要功能* / void main(void){moduleInit(& LedModule& nbsp;& nbsp;& ; & nbsp;& nbsp;& nbsp;& nbsp;& nbsp;); moduleInit()和keyModule而(1)最后,主要功能就这么简单,整个架构也是如此。它非常清晰,体现了编程的美。本文摘自公众号“科技成就梦想”,作者李晓耀-END-推荐阅读[01] MCU开发的内存节省方法(C语言版本)[02]单片机EMC测试工作,一文章将教您如何做! [03] [合集]深入分析单片机程序的操作(C程序版本)[04]工程师总结:C