⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio_reg32.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 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 + -