📄 gpio_reg32.h
字号:
/*
===============================================================================
TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
Property of Texas Instruments
For Unrestricted Internal Use Only
Unauthorized reproduction and/or distribution is strictly prohibited.
This product is protected under copyright law and trade secret law
as an unpublished work.
Created 1999, (C) Copyright 1999 Texas Instruments. All rights reserved.
Filename : gpio_reg32.h
Description : Header file for the MPU GPIO functions in gpio_reg32.c
Project : Perseus
Author : Sebastien SABATIER
FUNCTIONS PROVIDED :
GPIO_ReadAllDir -
GPIO_ReadAllDor |
GPIO_ReadAllDcr |
GPIO_ReadAllIcr |
GPIO_ReadAllImr |
GPIO_ReadAllIsr |
MACROS PROVIDED : = for MPU_IO_ADDR as base adress
gpio_set_all_dor |
gpio_set_all_dcr |
gpio_set_all_icr |
gpio_set_all_imr |
gpio_reset_all_isr -
===============================================================================
*/
#ifndef _GPIO__HH
#define _GPIO__HH
#include "global_types.h"
#include "mapping.h"
#include "mem.h"
#define GPIO_REG32_DIR_REG_OFFSET 0x000
#define GPIO_REG32_DOR_REG_OFFSET 0x004
#define GPIO_REG32_DCR_REG_OFFSET 0x008
#define GPIO_REG32_ICR_REG_OFFSET 0x00C
#define GPIO_REG32_IMR_REG_OFFSET 0x010
#define GPIO_REG32_ISR_REG_OFFSET 0x014
#define GPIO_REG32_DIR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_DIR_REG_OFFSET)
#define GPIO_REG32_DOR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_DOR_REG_OFFSET)
#define GPIO_REG32_DCR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_DCR_REG_OFFSET)
#define GPIO_REG32_ICR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_ICR_REG_OFFSET)
#define GPIO_REG32_IMR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_IMR_REG_OFFSET)
#define GPIO_REG32_ISR_REG_ADDR (MPU_IO_ADDR + GPIO_REG32_ISR_REG_OFFSET)
#define GPIO_HIGH 0x1
#define GPIO_LOW 0x0
#define DIR_OUTPUT 0x0
#define DIR_INPUT 0x1
#define IT_LOW_TO_HIGH 0x1
#define IT_HIGH_TO_LOW 0x0
#define IT_MASKED 0x1
#define IT_UNMASKED 0x0
#define STS_INTERRUPT_REQUESTED 0x1
#define STS_INTERRUPT_NOT_REQUESTED 0x0
#define STS_ACKNOLEDGE 0x1
typedef enum
{
MPUIO_MODULE_1 = 0,
MPUIO_MODULE_2 = 1,
MPUIO_MODULE_3 = 2,
MPUIO_MODULE_4 = 3,
MPUIO_MODULE_5 = 4,
MPUIO_MODULE_6 = 5
} Mpuio_module_t;
/*
-----------------------------------------------------------------------------
NAME : gpio_set_all_dor -
DESCRIPTION : Set the data output register -
SYNOPSYS : void gpio_set_all_dor(UWORD32 data_out) -
PARAMETERS : Output register pins -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_all_dor(data_reg, mpuio_module) \
{ \
*(REGISTER_UWORD32 *)(GPIO_REG32_DOR_REG_ADDR + mpuio_module * MEM_RHEA_STROBE_LENGTH) = data_reg;\
}
/*
-----------------------------------------------------------------------------
NAME : gpio_set_all_dcr -
DESCRIPTION : Set the direction control register -
SYNOPSYS : void gpio_set_all_dcr(UWORD32 data_out) -
PARAMETERS : Output register pins -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_all_dcr(data_reg, mpuio_module) \
{ \
*(REGISTER_UWORD32 *)(GPIO_REG32_DCR_REG_ADDR + mpuio_module * MEM_RHEA_STROBE_LENGTH) = data_reg;\
}
/*
-----------------------------------------------------------------------------
NAME : gpio_set_all_icr -
DESCRIPTION : Set the interrupt control register -
SYNOPSYS : void gpio_set_all_icr(UWORD32 data_out) -
PARAMETERS : Output register pins -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_all_icr(data_reg, mpuio_module) \
{ \
*(REGISTER_UWORD32 *)(GPIO_REG32_ICR_REG_ADDR + mpuio_module * MEM_RHEA_STROBE_LENGTH) = data_reg;\
}
/*
-----------------------------------------------------------------------------
NAME : gpio_set_all_imr -
DESCRIPTION : Set the interrupt mask register -
SYNOPSYS : void gpio_set_all_imr (UWORD32 data_out) -
PARAMETERS : Output register pins -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_all_imr(data_reg, mpuio_module) \
{ \
*(REGISTER_UWORD32 *)(GPIO_REG32_IMR_REG_ADDR + mpuio_module * MEM_RHEA_STROBE_LENGTH) = data_reg;\
}
/*
-----------------------------------------------------------------------------
NAME : gpio_set_all_isr -
DESCRIPTION : Set the interrupt status register -
SYNOPSYS : void gpio_set_all_isr (UWORD32 data_out) -
PARAMETERS : Output register pins -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_all_isr(data_reg, mpuio_module) \
{ \
*(REGISTER_UWORD32 *)(GPIO_REG32_ISR_REG_ADDR + mpuio_module * MEM_RHEA_STROBE_LENGTH) = data_reg;\
}
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllDir
DESCRIPTION : read GPIO inputs
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: input values
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllDir (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllDor
DESCRIPTION : read GPIO outputs
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: output values
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllDor (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllDcr
DESCRIPTION : read Direction Control Register
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: input value
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllDcr (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllIcr
DESCRIPTION : read interrupt control register
0 = high to low transition
1 = low to high transition
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: interrupt control register
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllIcr (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllDir
DESCRIPTION : read interrupt mask register
0 = unmasked
1 = masked
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: interrupt mask register value
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllImr (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadAllIsr
DESCRIPTION : read interrupt status register
0 = no interrupt request
1 = interrupt request
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
RETURN VALUE: interrupt status register value
LIMITATIONS : None
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadAllIsr (Mpuio_module_t mpuio_module);
/*
-------------------------------------------------------------------------
NAME : GPIO_ReadPin
DESCRIPTION : read input pin
PARAMETERS : MPUIO_MODULE1
MPUIO_MODULE2
MPUIO_MODULE_3
& pin_position
RETURN VALUE: input pin value
LIMITATIONS : only for input pin
-------------------------------------------------------------------------
*/
UWORD32 GPIO_ReadPin (UWORD32 pin_position, Mpuio_module_t mpuio_module);
/*
-----------------------------------------------------------------------------
NAME : gpio_set_pin -
DESCRIPTION : Set the output pin -
SYNOPSYS : void gpio_set_pin (UWORD32 pin_position) -
PARAMETERS : Output pin position, mpu IO Module -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_set_pin(pin_position, mpuio_module) \
{ \
gpio_set_all_dor( GPIO_ReadAllDor(mpuio_module)|(1<<(pin_position)), mpuio_module);\
}
/*
-----------------------------------------------------------------------------
NAME : gpio_clear_pin -
DESCRIPTION : Clear the output pin -
SYNOPSYS : void gpio_clear_pin (UWORD32 pin_position) -
PARAMETERS : Output pin position -
RETURN VALUE: None. -
LIMITATIONS : None -
-----------------------------------------------------------------------------
*/
#define gpio_clear_pin(pin_position, mpuio_module) \
{ \
gpio_set_all_dor( GPIO_ReadAllDor(mpuio_module)&~(1<<(pin_position)), mpuio_module);\
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -