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

文章目录

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

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

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


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

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

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

必要性

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

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

优点

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

构件封装的规范
构件方法

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

构件设计的最基本要求

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

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

(3)宏的使用限制。

(4)不使用全局变量。

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

  • gpio_init.h

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

  • gpio_init.c

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

实现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工程结构,特命名该文件夹。含主程序文件、中断服务例程文件等。这些文件是实际应用级并发人员进行编程的主要对象。

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

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

C编译过程
main函数之前的执行过程
发布了59 篇原创文章 · 获赞 16 · 访问量 7192

猜你喜欢

转载自blog.csdn.net/qq_42605300/article/details/105065012