嵌入式学习笔记 -- 入门与软件框架(1)

一.GPIO及基本打通原理

 

1.每个(GPIO)口均有12个寄存器,分别是:

       数据输入寄存器,数据输出寄存器,数据方向寄存器,上下拉使能寄存器,驱动选择寄存器,功能同变化寄存器,中断标志寄存器,中断边沿选择寄存器,中断向量寄存器,终端使能寄存器,复用选择寄存器。

 

2.  GPIO的模块的编程结构 -- 基本编程步骤

   1.引脚功能定义:通过复用选择寄存器定义引脚为GPIO功能。

   2.设置引脚方向:设置数据方向寄存器, “0”对应输入, “1”对应输出。

   3.输出功能:通过数据输出寄存器输出高电平或低电平。

   4.输入功能:通过数据输入寄存器读取 引 脚状态 “0”对应低电平 “1”对应高电平。

   注:实际编程时为防止输出电压抖动,引脚作为输出功能时可先进行数据输出寄存器的设置再设置数据方向寄存器。

 

 3.构件封装的必要性

初学入门GPIO编程过程只是为了理解GPIO的基本编程方法,实际并不实用。芯片引脚较多,不可能一一对应编程。 将对底层硬件的操作以构件的形式封装起来,给出函数名与接口参数,供实际编程时使用,将会提高开发效率与稳定性。
 

二.程序的基本调试方法

1.单步调试:在调试位置设置断点,到达断点位置之后,逐句 单步跟踪调试了解与硬件打交道的寄存器值的变化。 单步跟踪调试也用于底层驱动构件设计阶段。不 进入子函数内部执行的单步跟踪调试,可用于整体功 能跟踪。 

2.打桩调试:在程序中需要停住的位置加上for(;;);无限循环, 若运行效果和预期一致说明无限循环之前的语句正确 ,否则需要在此之前查找问题。 打桩调试常常用于断点单步调试不适用的场景, 辅助定位问题语句,如系统长时间运行后出现问题, 单步跟踪调试花费大量精力而不方便实现的情况。

3.Printf调试:在程序中使用printf构件,通过串口格式化输出 程序编写者想要知道的运行信息,如变量值、寄存器 值、任务或函数执行信息等。 例如,可以在一些关键的代码或子函数调用语句 的前后可以加入两条printf语句,标志关键语句的执 行情况。

 

三.GPIO封装方法与驱动构件封装规范

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

必要性:利用软件构件技术,可以有效提高编程人员的开发效率并且 使得程序更加规范。将底层驱动封装成构件,可以减少重复劳动,使应用程序开发者能够更多关注软件优化与稳定性。

 

 

移植:考虑使用与移植方便。要对构件的共性与 个性进行分析,抽取出构件的属性和对外 接口函数。
复用:使用同一芯片的应用系统,构件不更改,直接 使用;同系列芯片的同功能底层驱动复用时, 仅改动头文件;不同芯片的同功能底层驱动复 用时,头文件与源程序文件改动尽可能少。

交流:方便不同驱动构件使用者相互之间的交流,减少因函数封装不同带来的麻烦。

 

规范概要

1.每个构件由头文件(.h)和源文件(.c)两个独立文件组成,放 在以构件命名的文件夹中,驱动头文件(.h)中仅仅包含了对外接 口函数的声明,相当于使用指南。
2.需满足设计构件的最基本要求。
(1)考虑使用与移植方便。 (2)要有统一、规范的编码风格与注释。 (3)宏的使用限制。 (4)不使用全局变量。

嵌入式学习笔记 -- 入门与软件框架(1)

 

工程文件组织框架

 嵌入式系统工程包含若干文件,包括程序文件、头文件、与 编译调试相关的文件、工程说明文件、开发环境生成文件等

 合理组织这些文件,规范工程组织,可以提高项目的开发效率、提高阅读清晰度、提高可维护性、降低维护难度。

 这个工程框架也可被称为软件最小系统框架,因为它包含的工程的最基本要素。

 软件最小系统框架是一个能够点亮一个发光二管的,甚至带 有串口调试构件的,包含工程规范完整要素的可移植与可复用的工程模板。

 

Mian函数之前的执行过程

嵌入式学习笔记 -- 入门与软件框架(1)

 

四.嵌入式硬件构件

嵌入式硬件构件:是指将一个或多个硬件功能模块、支撑电路及其功能描述封装成一个可重用的硬件实体,并提供一系列规范的输入/输出接口。

核心构件:只有供给接口,没有需求接口,即只为 其他硬件构件提供服务而不接受服务, 如芯片的硬件最小系统。

中间构件:既有需求接口,又有供给接口,即不仅能接受其他构件提供的服务,也能为其他构件提供服务,如电源驱动构件,232电平转换构件

终端构件:只有需求接口,即只接受其他构件提供的服务,如LCD构件,LED构件,键盘构件