Kl25-ch04(第一个样例程序及工程组织)解析.ppt

Kl25-ch04(第一个样例程序及工程组织)解析.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Kl25-ch04(第一个样例程序及工程组织)解析

4.3.2 底层驱动构件封装规范概要与构件封装的前期准备 1.底层驱动构件封装规范概要 1)底层驱动构件的组成、存放位置与内容 所有底层驱动构件放在工程文件夹的“Drivers”文件夹中,以构件名命名。每个构件由头文件(.h)与源文件(.c)文件两个独立文件组成,放在以构件名命名的文件夹中。驱动构件头文件(.h)中仅包含对外接口函数的声明,是构件的使用指南。基本要求是调用者只看头文件即可使用构件。对外接口函数及内部函数的实现在构件源程序文件(.c)中。 同时应注意,头文件声明对外接口函数的顺序与源程序文件实现对外接口函数的顺序应保持一致。源程序文件中内部函数的声明,放在外接口函数代码的前面,内部函数的实现放在全部外接口函数代码的后面,以便提高可阅读性与可维护性。 * 2)制作构件的最基本要求 (1)考虑使用与移植方便。 (2)要有统一、规范的编码风格与注释。 (3)宏的使用限制。 (4)不使用全局变量。 2.构件封装的前期准备 具体内容见构件公共要素文件。该文件放在工程文件夹的“\Common”文件夹下,分别名为common.h和common.c。 1)KL25芯片寄存器映射文件 2)位操作宏函数 3)重定义基本数据类型 * 4.3.3 KL25的GPIO驱动构件及解析 GPIO驱动构件存放于网上光盘“..\ SD-FSL-KL25-Component\gpio”文件夹 1.GPIO驱动构件头文件(gpio.h) 在GPIO驱动构件的头文件(gpio.h)中包含的内容有:头文件说明;防止重复包含的条件编译代码结构“#ifndef ...#define ...#endif”;用宏定义方式统一了使用的端口名称(PORTA、PORTB、PORTC、PORTD、PORTE);给出5个对外服务函数的接口说明及声明,函数包括引脚初始化函数(gpio_init)、设定引脚状态函数(gpio_set)、获取引脚状态函数(gpio_get)、反转引脚状态函数(gpio_ reverse)、引脚上下拉使能函数(void gpio_pull)。 具体代码见教材P72-P74或光盘“..\ SD-FSL-KL25-Component\gpio\gpio.h” 文件。 * 2.GPIO驱动构件源程序文件(gpio.c)   GPIO驱动构件的源程序文件中实现的对外接口函数,主要是对相关寄存器进行配置,从而完成构件的基本功能。构件内部使用的函数也在构件源程序文件中定义。 具体代码见教材P74-P76或光盘“..\ SD-FSL-KL25-Component\gpio\gpio.c” 文件。 3.GPIO驱动构件解析 1)两个结构体类型 在工程文件夹的芯片头文件(“..\CPU\MKL25Z4.h”)中,有端口寄存器结构体,把端口模块的编程寄存器用一个结构体类型(PORT_MemMap)封装起来: * Typedef struct PORT_MemMap { uint32_t PCR[32]; //引脚控制寄存器(0~31),偏移: 0x0,间隔: 0x4 uint32_t GPCLR; //全局引脚控制寄存器(L),偏移:0x80 uint32_t GPCHR; //全局引脚控制寄存器(H),偏移:0x84 uint8_t RESERVED_0[24]; //保留(占位)(0~23) uint32_t ISFR; //中断状态标志寄存器,偏移:0xA0 } volatile *PORT_MemMapPtr; 同时定义了不优化的PORT模块寄存器结构体指针(PORT_MemMapPtr),这样,只要给出端口基地址,就可以使用该结构体的成员变量,实现对各寄存器的访问。类似,给出了GPIO模块结构体类型(GPIO_MemMap)及其指针: * Typedef struct GPIO_MemMap { uint32_t PDOR; //数据输出寄存器,偏移:0x0 uint32_t PSOR; //输出置1寄存器,偏移:0x4 uint32_t PCOR; //输出清0寄存器,偏移:0x8

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档