欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【嵌入式系统—GPIO应用编程】构件设计与实现

程序员文章站 2022-06-09 08:56:02
...

文章目录

1、GPIO构件封装方法与规范

2、利用构件方法控制小灯闪烁

3、工程文件组织框架与第一个C语言工程分析


1、GPIO构件封装方法与规范

构件封装建议、必要性与优点
建议

按底层硬件操作功能封装构件(给出函数名与接口函数),以供实际编程使用。

必要性

1、利用软件构件,编程开发效率且程序更规范;

2、将底层驱动封装成构件,可提高复用性,能更多关注软件优化与稳定性。

优点

可移植性、可复用性、方便不同构件间交流

 

构件封装的规范
构件方法

每个构件由(.h)和(.c)两个独立文件组成,放在以构件命名的文件夹中。(其中 .h 中仅仅包含了对外接口函数的声明,相当于使用指南)

构件设计的最基本要求

(1)考虑使用与移植方便。

(2)要有统一、规范的编码风格与注释。

(3)宏的使用限制。

(4)不使用全局变量。

例子:设计底层驱动构件gpio_init,代码大致如下:

  • gpio_init.h

【嵌入式系统—GPIO应用编程】构件设计与实现

PS:gpio_init.h文件内,还可以放入一些宏定义、相关接口声明等

  • gpio_init.c

【嵌入式系统—GPIO应用编程】构件设计与实现

 

2、利用构件方法控制小灯闪烁

【嵌入式系统—GPIO应用编程】构件设计与实现
实现led的大致原理图

 

构件

 

构件设计函数

底层驱动设计—GPIO

 

1、GPIO初始化:gpio_init (port pin, GPIO OUTPUT, state)

2、复位GPIO状态:gpio_set(port pin, state)

3、翻转GPIO状态:gpio_reverse (port pin)

应用构件设计—light

1、小灯初始化:light_init()

2、设置小灯状态:light_control()

3、翻转小灯状态:light_change()

我们把调用底层驱动构件设计的面向具体应用的构件,称为应用构件。

构件方法控制小灯闪烁-编程步骤
 

描述

步骤一、在light.h文件中

1、给小灯起名字,并明确与MCU连接引脚,进行宏定义;

2、对小灯亮、暗进行宏定义,方便编程

步骤二、在light.c文件中

写好以下三个函数:

  void light_init(uint 16 port pin, uint 8 state)

  void light_control(uint 16 port pin, uint 8 state)

  void light_change (uint_16 port pin)

步骤三、在main.c文件中

1、在main函数中初始化LED灯的初始状态;

 

light_init(LIGHT GREEN,LIGHT ON); //绿灯初始化

2、在功能函数中控制小灯状态发生变化

light_change(LIGHT GREEN); //翻转绿灯的亮灭状态
light_control(LIGHT GREEN,LIGHT OFF); //绿灯暗


3、工程文件组织框架与第一个C语言工程分析

嵌入式系统工程包含若干文件,包括程序文件、头文件、与编译调试相关的文件、工程说明文件、开发环境生成文件等,而合理组织这些文件,规范工程组织,可以提高项目的开发效率、提高阅读清晰度、提高可维护性、降低维护难度。该工程框架也可被称为软件最小系统框架,因为它包含的工程的最基本要素。

 

文件夹名

功能与特点

文档文件夹

Doc

工程改动时,及时记录。

CPU文件夹

CPU

与内核相关的文件。

MCU文件夹

MCU

(Linker File、MCU drivers、Startup)

链接文件夹,存放链接文件。

用户板文件夹

UserBoard

MCU底层构件文件夹,存放芯片级硬件驱动。启动文件夹。存放芯片头文件及芯片初始化文件用户板文件夹,存放应用级硬件驱动,即应用构件。

软件构件文件夹

SoftComponent

抽象软件构件文件夹,存放硬件不直接相关的软件构件。

无操作系统源程序文件夹

NosPrg

为了便于过渡到实时操作系统RTOS工程结构,特命名该文件夹。含主程序文件、中断服务例程文件等。这些文件是实际应用级并发人员进行编程的主要对象。

【嵌入式系统—GPIO应用编程】构件设计与实现

【嵌入式系统—GPIO应用编程】构件设计与实现

 

【嵌入式系统—GPIO应用编程】构件设计与实现

 

从源代码到最后的可执行文件,可认为需经过编译、汇编和链接三个过程 。

每个源代码文件在编译和汇编后都会生成一个可重定位的目标文件,而链接器可以将这些中间文件组合成最终的可执行目标文件 。

【嵌入式系统—GPIO应用编程】构件设计与实现
C编译过程

 

 

【嵌入式系统—GPIO应用编程】构件设计与实现
main函数之前的执行过程