📄 gpio.h
字号:
/****************************************Copyright (c)**************************************************
**
**
** 杭州央海软件科技有限公司
**
** http://www.armgcc.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: gpio.h
** 创 建 人: 罗辉联
** 创建日期: 2006年5月10日
** 描 述: 该文件包含了所有GPIO功能函数原型与所需要的常量
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: 罗辉联
** 版 本: V1.0
** 日 期: 2006年5月10日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __GPIO_H
#define __GPIO_H
#include "cpu_cfg.h"
#ifdef __cplusplus
extern "C" {
#endif
#if EN_ARM_GPIO > 0 //决定是否编译该文件
/************************************** 宏定义,常量定义 ******************************************/
//说明: 通过带参数的宏来访问不同GPIO的同一个名称的寄存器
#define GPIOx_PC0(port) (*((volatile unsigned short *)(0xE0003000+(port)*0x1000+PC0)))
#define GPIOx_PC1(port) (*((volatile unsigned short *)(0xE0003000+(port)*0x1000+PC1)))
#define GPIOx_PC2(port) (*((volatile unsigned short *)(0xE0003000+(port)*0x1000+PC2)))
#define GPIOx_PD(port) (*((volatile unsigned short *)(0xE0003000+(port)*0x1000+PD)))
#define GPIO_LSB 0x00
#define GPIO_MSB 0x08
/************************************** 枚举类型定义 *******************************************/
typedef enum { GPIO0 =0, GPIO1,GPIO2 } GPIO_CHANNELS_T;
typedef enum { GPIO_LOW = 0,GPIO_HIGHT = 1 } GPIO_VALUE_T;
typedef enum
{
GPIO_HiZ_AIN = 0,
GPIO_IN_TTL,
GPIO_IN_COMS,
GPIO_IPUPD, //Input Pull Up /Pull Down
GPIO_OUT_OD, //Open Drain and out
GPIO_OUT_PP, //Push-Pull and OUT
GPIO_AF_OD, //Open Drain and AF
GPIO_AF_PP //Push-Pull and AF
} GPIO_MODE_T;
/************************************** 结构体类型定义 ******************************************/
/********************************** 全局外部函数原型声明 *****************************************/
/*********************************************************************************************************
;** 函数名称: GPIO_Reset
;** 功能描述: 由于P2.0~7作为CS0~3,A20~23,所以P2.0~7配置为AF_PP模式,其他的GPIO缺省配置为Push-Pull output
;** 其值复位为0
;**
;** 参 数: 无
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void GPIO_Reset(void);
/*********************************************************************************************************
;** 函数名称: GPIO_ModeConfig
;** 功能描述: IO端口模式设置
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
;** bit: 设置的IO位
:** mode :IO的工作模式如下
:** GPIO_HiZ_AIN
:** GPIO_IN_TTL
:** GPIO_IN_COMS
:** GPIO_IPUPD //Input Pull Up /Pull Down
:** GPIO_OUT_OD //Open Drain and out
:** GPIO_OUT_PP //Push-Pull and OUT
:** GPIO_AF_OD //Open Drain and AF
:** GPIO_AF_PP //Push-Pull and AF
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void GPIO_ModeConfig(GPIO_CHANNELS_T port, UWORD8 bit,GPIO_MODE_T mode);
/*********************************************************************************************************
;** 函数名称: GPIO_SetBit
;** 功能描述: 设置GPIO端口数据
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
:** bit :指定设置的位编号(0~15)
;** value :GPIO_LOW, GPIO_HIGHT
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void GPIO_SetBit(GPIO_CHANNELS_T port,UWORD8 bit,GPIO_VALUE_T value);
/*********************************************************************************************************
;** 函数名称: GPIO_ReadBit,1,2
;** 功能描述: 读取GPIO_0,1,2端口数据
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
:** bit :指定读取的位编号(0~15)
;**
;** 返 回 值: 读取指定GPIO位的值(0,1)
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
UWORD8 GPIO_ReadBit(GPIO_CHANNELS_T port, UWORD8 bit);
/*********************************************************************************************************
;** 函数名称: GPIO_SetBytet
;** 功能描述: 设置GPIO_0,1,2端口数据
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
:** port_byte:高8位还是低8位(GPIO_MSB or GPIO_LSB)
;** port_value:设置值
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void GPIO_SetByte(GPIO_CHANNELS_T port,UWORD8 port_byte, UWORD8 port_value);
/*********************************************************************************************************
;** 函数名称: GPIO_ReadByte
;** 功能描述: Read the desired port Byte value
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
:** port_byte:高8位还是低8位(GPIO_MSB or GPIO_LSB)
;**
;** 返 回 值: 选择PD寄存器的高8位或者低8位
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
UWORD8 GPIO_ReadByte(GPIO_CHANNELS_T port,UWORD8 port_byte);
/*********************************************************************************************************
;** 函数名称: GPIO_SetWord
;** 功能描述: Write word value to the selected PD register
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
:** port_value: 端口值
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void GPIO_SetWord(GPIO_CHANNELS_T port,UWORD16 port_value);
/*********************************************************************************************************
;** 函数名称: GPIO_ReadWord
;** 功能描述: Read the desired port word value
;**
;** 参 数: port:GPIO0 GPIO1 GPIO2
;**
;** 返 回 值: The selected PD register value
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
UWORD16 GPIO_ReadWord(GPIO_CHANNELS_T port);
#endif /* EN_ARM_GPIO > 0 */
#ifdef __cplusplus
}
#endif
#endif /* __GPIO_H */
/****************************************end of file*******************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -