📄 gpio_interface.h
字号:
/************************************************************************************
* Public header file for the Gpio driver.
*
* Author(s): - B04839
*
* (c) Copyright 2006, Freescale, Inc. All rights reserved.
*
* No part of this document must be reproduced in any form - including copied,
* transcribed, printed or by any electronic means - without specific written
* permission from Freescale.
*
Revision history:
Date Author Comments
---------- ---------------------- -------
31.08.2006 B04839 Created
************************************************************************************/
#ifndef _GPIO_INTERFACE_H_
#define _GPIO_INTERFACE_H_
#include "Platform.h"
#include "../Interface/EmbeddedTypes.h"
/************************************************************************************
*************************************************************************************
* Public macros
*************************************************************************************
************************************************************************************/
#define PORT_PINS_NO 32
#define FUNCTION_MASK 0x3UL
#define PinMask(gpioPin) (0x01UL << (gpioPin))
/************************************************************************************
*************************************************************************************
* Public type definitions
*************************************************************************************
************************************************************************************/
typedef enum
{
gGpioPort0_c = 0,
gGpioPort1_c,
gGpioPortMax_c
} GpioPort_t;
typedef enum
{
gGpioDirIn_c = 0,
gGpioDirOut_c,
gGpioDirMax_c
} GpioDirection_t;
typedef enum
{
gGpioPinStateLow_c = 0,
gGpioPinStateHigh_c,
gGpioPinStateMax_c,
} GpioPinState_t;
typedef enum
{
gGpioPinReadPad_c = 0,
gGpioPinReadReg_c,
gGpioPinReadMax_c
} GpioPinReadSel_t;
typedef enum
{
gGpioPinPulldown_c = 0,
gGpioPinPullup_c,
gGpioPinPullupMax_c,
} GpioPinPullupSel_t;
typedef enum
{
gGpioPin0_c, gGpioPin1_c, gGpioPin2_c, gGpioPin3_c, gGpioPin4_c, gGpioPin5_c, gGpioPin6_c, gGpioPin7_c,
gGpioPin8_c, gGpioPin9_c, gGpioPin10_c, gGpioPin11_c, gGpioPin12_c, gGpioPin13_c, gGpioPin14_c, gGpioPin15_c,
gGpioPin16_c, gGpioPin17_c, gGpioPin18_c, gGpioPin19_c, gGpioPin20_c, gGpioPin21_c, gGpioPin22_c, gGpioPin23_c,
gGpioPin24_c, gGpioPin25_c, gGpioPin26_c, gGpioPin27_c, gGpioPin28_c, gGpioPin29_c, gGpioPin30_c, gGpioPin31_c,
gGpioPin32_c, gGpioPin33_c, gGpioPin34_c, gGpioPin35_c, gGpioPin36_c, gGpioPin37_c, gGpioPin38_c, gGpioPin39_c,
gGpioPin40_c, gGpioPin41_c, gGpioPin42_c, gGpioPin43_c, gGpioPin44_c, gGpioPin45_c, gGpioPin46_c, gGpioPin47_c,
gGpioPin48_c, gGpioPin49_c, gGpioPin50_c, gGpioPin51_c, gGpioPin52_c, gGpioPin53_c, gGpioPin54_c, gGpioPin55_c,
gGpioPin56_c, gGpioPin57_c, gGpioPin58_c, gGpioPin59_c, gGpioPin60_c, gGpioPin61_c, gGpioPin62_c, gGpioPin63_c,
gGpioPinMax_c
} GpioPin_t;
typedef enum {
gGpioNormalMode_c = 0,
gGpioAlternate1Mode_c,
gGpioAlternate2Mode_c,
gGpioAlternate3Mode_c,
gGpioFunctionModeMax_c
} GpioFunctionMode_t;
typedef enum {
gGpioErrNoError_c = 0,
gGpioErrInvalidParameter_c
} GpioErr_t;
typedef enum {
gGpioDirAttr_c = 0,
gGpioDataAttr_c ,
gGpioInputDataSelAttr_c,
gGpioPullUpEnAttr_c ,
gGpioPullUpSelAttr_c,
gGpioHystEnAttr_c,
gGpioPullUpKeepAttr_c,
gGpioMaxAttr_c
}GpioPortAttr_t;
typedef struct{
uint32_t portDir;
uint32_t portData;
uint32_t portInputDataSel;
uint32_t portPuEn;
uint32_t portPuSel;
uint32_t portHystEn;
uint32_t portPuKeepEn;
}GpioPortInit_t;
/************************************************************************************
*************************************************************************************
* Public prototypes
*************************************************************************************
************************************************************************************/
/************************************************************************************
*************************************************************************************
* Public type definitions
*************************************************************************************
************************************************************************************/
/************************************************************************************
*************************************************************************************
* Public memory declarations
*************************************************************************************
************************************************************************************/
/************************************************************************************
*************************************************************************************
* Public functions
*************************************************************************************
************************************************************************************/
/*GENERAL*/
/*================================================================================================*/
/*===== Gpio_InitPort =====*/
/**
@brief Set the initial port settings of the port gpioPort specified as paramer.
@param GpioPort_t gpioPort - input parameter: port which will be affected by the function.
@param GpioPortInit_t* gpioPortInit - input parameter: pointer to a structure that hold the
initial port settings.
@return parameter of type GpioErr_t with following possible values:
gGpioErrInvalidParamater_c - if the port gpioPort specified as parameter is grater or equal
than gGpioPortMax_c or gpioPortInit is NULL.
gGpioErrNoError_c - in rest.
Revision history:
Date Author Comments
---------- ---------------------- -------
26.06.2007 B04839 Created
*/
/*===============================================================================================*/
extern GpioErr_t Gpio_InitPort(GpioPort_t gpioPort, GpioPortInit_t* gpioPortInit);
/*================================================================================================*/
/*===== Gpio_WrPortSetting =====*/
/**
@brief Modify the attribute portAttr of the port gpioPort specified as parameter.
@param GpioPort_t gpioPort - input parameter: port which will be affected by the function.
@param GpioPortAttr_t portAttr - input parameter: port attribute that should be modified.
@param uint32_t portAttrValue - input parameter: new attribute value.
@param uint32_t mask - input parameter: specifies which pins of the port gpioPort
should be affected by the function (the attribute would be
modified if the corresponding bit is set).
@return parameter of type GpioErr_t with following possible values:
gGpioErrInvalidParamater_c - if the port gpioPort specified as parameter is grater or equal than
gGpioPortMax_c or portAttr is grater or equal than gMaxAttr_c .
gGpioErrNoError_c - in rest.
Revision history:
Date Author Comments
---------- ---------------------- -------
26.06.2007 B04839 Created
*/
/*===============================================================================================*/
extern GpioErr_t Gpio_WrPortSetting(GpioPort_t gpioPort, GpioPortAttr_t portAttr, uint32_t portAttrValue, uint32_t mask);
/*================================================================================================*/
/*===== Gpio_RdPortSetting =====*/
/**
@brief Read the value of attribute portAttr of the gpioPort port specified as parameter.
@param GpioPort_t gpioPort - input parameter: port which will be affected by the function.
@param GpioPortAttr_t portAttr - input parameter: port attribute that should be modified.
@param uint32_t *portAttrValue - output parameter: pointer to the memory location where
attribute value will be placed.
@return parameter of type GpioErr_t with following possible values:
gGpioErrInvalidParamater_c - if the port gpioPort specified as parameter is grater or equal
than gGpioPortMax_c or portAttrValue is NULL.
gGpioErrNoError_c - in rest.
Revision history:
Date Author Comments
---------- ---------------------- -------
26.06.2007 B04839 Created
*/
/*===============================================================================================*/
extern GpioErr_t Gpio_RdPortSetting(GpioPort_t gpioPort, GpioPortAttr_t portAttr, uint32_t* portAttrValue);
/*DIRECTION*/
/*================================================================================================*/
/*===== Gpio_SetPortDir =====*/
/**
@brief Set the direction value of the port gpioPort specified as parameter.
@param GpioPort_t gpioPort - input parameter: port which will be affected by the function.
@param uint32_t portDir - input parameter: port direction value.
@param uint32_t mask - input parameter: specifies which pins of the port gpioPort
should be affected by the function (the directiorn would be
modified if the corresponding bit is set).
@return parameter of type GpioErr_t with following possible values:
gGpioErrInvalidParamater_c - if the port gpioPort specified as parameter is grater or equal
than gGpioPortMax_c or portAttrValue is NULL.
gGpioErrNoError_c - in rest.
Revision history:
Date Author Comments
---------- ---------------------- -------
26.06.2007 B04839 Created
*/
/*===============================================================================================*/
extern GpioErr_t Gpio_SetPortDir(GpioPort_t gpioPort, uint32_t portDir, uint32_t mask);
/*================================================================================================*/
/*===== Gpio_GetPortDir =====*/
/**
@brief Read the direction value of the gpioPort port specified as parameter.
@param GpioPort_t gpioPort - input parameter: port to get direction.
@param uint32_t *portDir - output parameter: pointer to memeory location where
GPIO port direction value will be placed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -