📄 gpio.h
字号:
/******************************************************************************
*
* Motorola Inc.
* (c) Copyright 2001 Motorola, Inc.
* ALL RIGHTS RESERVED.
*
*******************************************************************************
*
* FILE NAME: gpio.h
*
* DESCRIPTION: Header file for GPIO driver
*
* MODULES INCLUDED: none
*
* NOTES:
*
*******************************************************************************/
#ifndef __GPIO_H
#define __GPIO_H
/************************************************************
* GPIO module identifiers, correspond to module base address
*************************************************************/
#define GPIO_A (&ArchIO.PortA)
#define GPIO_B (&ArchIO.PortB)
#define GPIO_D (&ArchIO.PortD)
#define GPIO_E (&ArchIO.PortE)
/****************************************************
* Configurable items, i.e. defines, for appconfig.h
*****************************************************
void gpioxISR( void ); prototype for user ISR
#define INTERRUPT_VECTOR_ADDR_yy gpioxISR
#define ITCN_INTERRUPT_PRIORITY_yy value 0-7 (0 = interrupt disabled)
#define GPIO_x_PULLUP_ENABLE_REG 0x0000
#define GPIO_x_DATA_DIRECTION_REG 0x0000
#define GPIO_x_PERIPHERAL_ENABLE_REG 0x0000
#define GPIO_x_INTERRUPT_ENABLE_REG 0x0000
#define GPIO_x_INTERRUPT_POLARITY_REG 0x0000
where:
x is GPIO module (A, B, D or E)
yy is interrupt vector number
23 - GPIO A
22 - GPIO B
20 - GPIO D
19 - GPIO E
*/
/*****************************************************************
* ioctl() commands
*
* Word16 ioctl( PWM_module_identifier, Command_name, Parameter );
*
******************************************************************
COMMAND NAME PARAMETERS, COMMENTS
--------------------------------------------------------*/
#define GPIO_INIT /* NULL */
#define GPIO_SETAS_GPIO /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_SETAS_PERIPHERAL /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_SETAS_INPUT /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_SETAS_OUTPUT /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_DISABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_ENABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_PULLUP_DISABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_PULLUP_ENABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_ASSERT_DISABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_ASSERT_ENABLE /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_DETECTION_ACTIVE_HIGH /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_INT_DETECTION_ACTIVE_LOW /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_CLEAR_EDGE_SENSITIVE_INT_FLAG /* NULL */
#define GPIO_SET_PIN /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_CLEAR_PIN /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_TOGGLE_PIN /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_READ_DATA /* NULL */
#define GPIO_WRITE_DATA /* BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7 */
#define GPIO_READ_INT_PENDING_REG /* NULL */
/****************************************************************************
* GPIO constants used in the ioctl functions
*****************************************************************************/
#define BIT_0 0x0001
#define BIT_1 0x0002
#define BIT_2 0x0004
#define BIT_3 0x0008
#define BIT_4 0x0010
#define BIT_5 0x0020
#define BIT_6 0x0040
#define BIT_7 0x0080
/***********************************************************************
*
* GPIO Init
*
***********************************************************************/
#define ioctlGPIO_INIT(pGpioBase, param) gpioInit((arch_sPort *)pGpioBase)
void gpioInit(arch_sPort *pGpioBase); /* function prototype - implemented in gpio.c */
/***********************************************************************
*
* GPIO Peripheral Enable Register
*
***********************************************************************/
#define ioctlGPIO_SETAS_GPIO(pGpioBase, param) \
periphBitClear (param,(UWord16 *)(&((arch_sPort*)pGpioBase)->PeripheralReg))
#define ioctlGPIO_SETAS_PERIPHERAL(pGpioBase, param) \
periphBitSet (param,(UWord16 *)(&((arch_sPort*)pGpioBase)->PeripheralReg))
/***********************************************************************
*
* GPIO Data Direction Register
*
***********************************************************************/
#define ioctlGPIO_SETAS_INPUT(pGpioBase, param) \
periphBitClear (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataDirectionReg))
#define ioctlGPIO_SETAS_OUTPUT(pGpioBase, param) \
periphBitSet (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataDirectionReg))
/***********************************************************************
*
* GPIO Data Register
*
***********************************************************************/
#define ioctlGPIO_SET_PIN(pGpioBase, param) \
periphBitSet(param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataReg))
#define ioctlGPIO_CLEAR_PIN(pGpioBase, param) \
periphBitClear (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataReg))
#define ioctlGPIO_TOGGLE_PIN(pGpioBase, param) \
periphBitChange (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataReg))
#define ioctlGPIO_READ_DATA(pGpioBase, param) \
periphMemRead((UWord16 *)(&((arch_sPort*)pGpioBase)->DataReg))
#define ioctlGPIO_WRITE_DATA(pGpioBase, param) \
periphMemWrite(param, (UWord16 *)(&((arch_sPort*)pGpioBase)->DataReg))
/***********************************************************************
*
* GPIO Pull-Up Enable Register
*
***********************************************************************/
#define ioctlGPIO_PULLUP_DISABLE(pGpioBase, param) \
periphBitClear (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->PullUpReg))
#define ioctlGPIO_PULLUP_ENABLE(pGpioBase, param) \
periphBitSet (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->PullUpReg))
/***********************************************************************
*
* GPIO Interrupt Assert Register
*
***********************************************************************/
#define ioctlGPIO_INT_ASSERT_DISABLE(pGpioBase, param) \
periphBitClear(param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntAssertReg))
#define ioctlGPIO_INT_ASSERT_ENABLE(pGpioBase, param) \
periphBitSet (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntAssertReg))
/***********************************************************************
*
* GPIO Interrupt Enable Register
*
***********************************************************************/
#define ioctlGPIO_INT_DISABLE(pGpioBase, param) \
periphBitClear(param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntEnableReg))
#define ioctlGPIO_INT_ENABLE(pGpioBase, param) \
periphBitSet (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntEnableReg))
/***********************************************************************
*
* GPIO Interrupt Polarity Register
*
***********************************************************************/
#define ioctlGPIO_INT_DETECTION_ACTIVE_HIGH(pGpioBase, param) \
periphBitClear(param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntPolarityReg))
#define ioctlGPIO_INT_DETECTION_ACTIVE_LOW(pGpioBase, param) \
periphBitSet (param, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntPolarityReg))
/***********************************************************************
*
* GPIO Interrupt Edge Sensitive Register
*
***********************************************************************/
#define ioctlGPIO_CLEAR_EDGE_SENSITIVE_INT_FLAG(pGpioBase, param) \
periphMemWrite(0x0000, (UWord16 *)(&((arch_sPort*)pGpioBase)->IntEdgeSensReg))
/***********************************************************************
*
* GPIO Interrupt Pending Register
*
***********************************************************************/
#define ioctlGPIO_READ_INT_PENDING_REG(pGpioBase, param) \
periphMemRead((UWord16 *)(&((arch_sPort*)pGpioBase)->IntPendingReg))
/**********************************************************************
*
* Include of device specific GPIO commands and defines
*
***********************************************************************/
#include "gpiotarget.h" /* device specific defines */
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -