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

📄 gpio_w.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
📖 第 1 页 / 共 4 页
字号:
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_DEBOUNCINGTIME_OFFSET) = data_reg
#define GPIO_SetClearIrqEnable1(gpio_base_addr, data_reg) \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARIRQENABLE1_OFFSET) = data_reg
#define GPIO_SetSetIrqEnable1(gpio_base_addr, data_reg)   \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETIRQENABLE1_OFFSET) = data_reg
#define GPIO_SetClearIrqEnable2(gpio_base_addr, data_reg) \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARIRQENABLE2_OFFSET) = data_reg
#define GPIO_SetSetIrqEnable2(gpio_base_addr, data_reg)   \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETIRQENABLE2_OFFSET) = data_reg
#define GPIO_SetClearWakuena(gpio_base_addr, data_reg)  \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARWAKEUPENA_OFFSET) = data_reg
#define GPIO_SetSetWakuena(gpio_base_addr, data_reg)    \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETWAKEUPENA_OFFSET) = data_reg
#define GPIO_SetClearDataout(gpio_base_addr, data_reg)    \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARDATAOUT_OFFSET) = data_reg
#define GPIO_SetSetDataout(gpio_base_addr, data_reg)      \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETDATAOUT_OFFSET) = data_reg



/*
/ 2 - Register read macros
*/
#define GPIO_GetRevision(gpio_addr)        (REG32((gpio_addr) + GPIO_REVISION_OFFSET))
#define GPIO_GetSysConf(gpio_addr)         (REG32((gpio_addr) + GPIO_SYSCONFIG_OFFSET))
#define GPIO_GetSysStatus(gpio_addr)       (REG32((gpio_addr) + GPIO_SYSSTATUS_OFFSET))
#define GPIO_GetIrqStatus1(gpio_addr)      (REG32((gpio_addr) + GPIO_IRQSTATUS1_OFFSET))
#define GPIO_GetIrqStatus2(gpio_addr)      (REG32((gpio_addr) + GPIO_IRQSTATUS2_OFFSET))
#define GPIO_GetIrqEna1(gpio_addr)         (REG32((gpio_addr) + GPIO_IRQENABLE1_OFFSET))
#define GPIO_GetIrqEna2(gpio_addr)         (REG32((gpio_addr) + GPIO_IRQENABLE2_OFFSET))
#define GPIO_GetWakupEnable(gpio_addr)     (REG32((gpio_addr) + GPIO_WAKEUPENABLE_OFFSET))
#define GPIO_GetCtrl(gpio_addr)            (REG32((gpio_addr) + GPIO_CTRL_OFFSET))
#define GPIO_GetOe(gpio_addr)              (REG32((gpio_addr) + GPIO_OE_OFFSET))
#define GPIO_GetDatain(gpio_addr)          (REG32((gpio_addr) + GPIO_DATAIN_OFFSET))
#define GPIO_GetDataout(gpio_addr)         (REG32((gpio_addr) + GPIO_DATAOUT_OFFSET))
#define GPIO_GetLevelDetect0(gpio_addr)    (REG32((gpio_addr) + GPIO_LEVELDETECT0_OFFSET))
#define GPIO_GetLevelDetect1(gpio_addr)    (REG32((gpio_addr) + GPIO_LEVELDETECT1_OFFSET))
#define GPIO_GetRisingDetect(gpio_addr)    (REG32((gpio_addr) + GPIO_RISINGDETECT_OFFSET))
#define GPIO_GetFallingDetect(gpio_addr)   (REG32((gpio_addr) + GPIO_FALLINGDETECT_OFFSET))
#define GPIO_GetDebouncEnable(gpio_addr)   (REG32((gpio_addr) + GPIO_DEBOUNCENABLE_OFFSET))
#define GPIO_GetDebouncingTime(gpio_addr)  (REG32((gpio_addr) + GPIO_DEBOUNCINGTIME_OFFSET))
#define GPIO_GetClearIrqEnable1(gpio_addr) (REG32((gpio_addr) + GPIO_CLEARIRQENABLE1_OFFSET))
#define GPIO_GetSetIrqEnable1(gpio_addr)   (REG32((gpio_addr) + GPIO_SETIRQENABLE1_OFFSET))
#define GPIO_GetClearIrqEnable2(gpio_addr) (REG32((gpio_addr) + GPIO_CLEARIRQENABLE2_OFFSET))
#define GPIO_GetSetIrqEnable2(gpio_addr)   (REG32((gpio_addr) + GPIO_SETIRQENABLE2_OFFSET))
#define GPIO_GetClearWakuena(gpio_addr)    (REG32((gpio_addr) + GPIO_CLEARWAKEUPENA_OFFSET))
#define GPIO_GetSetWakuena(gpio_addr)      (REG32((gpio_addr) + GPIO_SETWAKEUPENA_OFFSET))
#define GPIO_GetClearDataout(gpio_addr)    (REG32((gpio_addr) + GPIO_CLEARDATAOUT_OFFSET))
#define GPIO_GetSetDataout(gpio_addr)      (REG32((gpio_addr) + GPIO_SETDATAOUT_OFFSET))



/*
/ 3 - Set all bits of one register to the same value
*/

// ---------------------------------------------------------------------------
#define GPIO_EnableAllOutput(gpio_addr)                             \
        REG32((gpio_addr) + GPIO_OE_OFFSET) = 0

#define GPIO_DisableAllOutput(gpio_addr)                             \
        REG32((gpio_addr) + GPIO_OE_OFFSET) = 0xFFFFFFFF

// ---------------------------------------------------------------------------
#define GPIO_SetAllSetDataOut(gpio_addr)                                 \
        REG32((gpio_addr) + GPIO_SETDATAOUT_OFFSET) = 0xFFFFFFFF

#define GPIO_ClearAllSetDataOut(gpio_addr)                                 \
        REG32((gpio_addr) + GPIO_SETDATAOUT_OFFSET) = 0

// ------------------------------------------------------------------------------
#define GPIO_SetAllIrqEna1(gpio_base_addr)                              \
        REG32((gpio_base_addr) + GPIO_IRQENABLE1_OFFSET) = 0xFFFFFFFF

#define GPIO_ClearAllIrqEna1(gpio_base_addr)                              \
        REG32((gpio_base_addr) + GPIO_IRQENABLE1_OFFSET) = 0

// -----------------------------------------------------------------------------
#define GPIO_SetAllIrqEna2(gpio_base_addr)                              \
        REG32((gpio_base_addr) + GPIO_IRQENABLE2_OFFSET) = 0xFFFFFFFF

#define GPIO_ClearAllIrqEna2(gpio_base_addr)                              \
        REG32((gpio_base_addr) + GPIO_IRQENABLE2_OFFSET) = 0

// -----------------------------------------------------------------------------
#define GPIO_ClearAllIrq1(gpio_base_addr)                \
        REG32((gpio_base_addr) + GPIO_IRQSTATUS1_OFFSET) = 0xFFFFFFFF


// -----------------------------------------------------------------------------
#define GPIO_ClearAllIrq2(gpio_base_addr)                \
        REG32((gpio_base_addr) + GPIO_IRQSTATUS2_OFFSET) = 0xFFFFFFFF

/*
/ 4 - Set/Clears bits
*/
#define GPIO_SetOutPin(gpio_base_addr, pin_position)                                   \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETDATAOUT_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------
#define GPIO_ClearOutPin(gpio_base_addr, pin_position)                                   \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARDATAOUT_OFFSET) |= (1 << (pin_position))

// ----------------------------------------------------------------------------------------------
#define GPIO_SetIrqEna1Pin(gpio_base_addr, pin_position)                              \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETIRQENABLE1_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------
#define GPIO_ClearIrqEna1Pin(gpio_base_addr, pin_position)                           \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARIRQENABLE1_OFFSET) |= (1 << (pin_position))

// ----------------------------------------------------------------------------------------------
#define GPIO_SetIrqEna2Pin(gpio_base_addr, pin_position)                               \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SETIRQENABLE2_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------
#define GPIO_ClearIrqEna2Pin(gpio_base_addr, pin_position)                           \
  *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_CLEARIRQENABLE2_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------
#define GPIO_ClearIrqStatus1Pin(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS1_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------
#define GPIO_ClearIrqStatus2Pin(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS2_OFFSET) |= (1 << (pin_position))

// -------------------------------------------------------------------------------------------

/*
/ 5 - Writes individual bits
*/
// OE register
#define GPIO_SetOeBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_OE_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearOeBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_OE_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// LEVELDETECT0 register
#define GPIO_SetLevelDetect0Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_LEVELDETECT0_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearLevelDetect0Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_LEVELDETECT0_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// LEVELDETECT1 register
#define GPIO_SetLevelDetect1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_LEVELDETECT1_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearLevelDetect1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_LEVELDETECT1_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// RISINGDETECT register
#define GPIO_SetRisingDetectBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_RISINGDETECT_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearRisingDetectBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_RISINGDETECT_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// FALLINGDETECT register
#define GPIO_SetFallingDetectBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_FALLINGDETECT_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearFallingDetectBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_FALLINGDETECT_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// DEBOUNCENABLE register
#define GPIO_SetDebouncenableBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_DEBOUNCENABLE_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearDebouncenableBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_DEBOUNCENABLE_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// WAKEUPENABLE register
#define GPIO_SetWakeupEnableBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_WAKEUPENABLE_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearWakeupEnableBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_WAKEUPENABLE_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// IRQENABLE1 register
#define GPIO_SetIrqEnable1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQENABLE1_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearIrqEnable1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQENABLE1_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// IRQENABLE2 register
#define GPIO_SetIrqEnable2Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQENABLE2_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearIrqEnable2Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQENABLE2_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// IRQSTATUS1 register
#define GPIO_SetIrqStatus1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS1_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearIrqStatus1Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS1_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// IRQSTATUS2 register
#define GPIO_SetIrqStatus2Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS2_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearIrqStatus2Bit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_IRQSTATUS2_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// DATAOUT register
#define GPIO_SetDataOutBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_DATAOUT_OFFSET) |= (1 << (pin_position))

#define GPIO_ClearDataOutBit(gpio_base_addr, pin_position)   \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_DATAOUT_OFFSET) &= ~(1 << (pin_position))

// -------------------------------------------------------------------------------------------
// Control fileds in SYSCONFIG register
#define GPIO_ForceSoftReset(gpio_base_addr)      \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) |= 2

#define GPIO_SetAutoIdle(gpio_base_addr)      \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) |= 1

#define GPIO_ClearAutoIdle(gpio_base_addr)      \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) &= 0x1E

#define GPIO_SetEnaWakeUp(gpio_base_addr)        \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) |= 4

#define GPIO_ClearEnaWakeUp(gpio_base_addr)      \
        *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) &= 0x1B

#define GPIO_SetIdleMode(gpio_base_addr, value)         \
        {               \
          UWORD32 _reg; \
          _reg = *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET); \
          *(REGISTER_UWORD32 *)((gpio_base_addr) + GPIO_SYSCONFIG_OFFSET) = ((_reg & 0x7) | ((value) << 3)); \
        }


/*
/ 6 - Gets individual bits
*/
#define GPIO_GetInputPin(gpio_addr, BitNumber)                                   \
        ((REG32((gpio_addr) + GPIO_DATAIN_OFFSET) & (0x1<<(BitNumber))) >> (BitNumber))

#define GPIO_GetIrqStatusPin(gpio_addr, BitNumber)                                   \
				((GPIO_GetIrqStatus2(gpio_addr)) >> BitNumber)


void GPIO_SetDirection(Gpio_Num_t gpio_num, Gpio_Direct_t gpio_direct);

void GPIO_SetDataOut_Low(Gpio_Num_t gpio_num);

void GPIO_SetDataOut_High(Gpio_Num_t gpio_num);
signed char GPIO_GetDataIn(Gpio_Num_t gpio_num);

void GPIO_SetEdgeCtrl(Gpio_Num_t gpio_num, GPIO_Edge_Level_Ctrl_t edge_level_ctrl);

void GPIO_ClearEdgeCtrl(Gpio_Num_t gpio_num, GPIO_Edge_Level_Ctrl_t edge_level_ctrl);
void GPIO_SetOnePinInterruptMask(Gpio_Num_t gpio_num, GPIO_IT_Mask_t mask);
UWORD16 GPIO_GetInterruptStatus(Gpio_Num_t gpio_num);
void GPIO_AcknoledgeInterrupt(Gpio_Num_t gpio_num);

void GPIO_ConfigureInterruptEnable(Gpio_Num_t gpio_num, GPIO_Edge_Level_Ctrl_t edge_level_ctrl,isrpointer isrHandlerName);
void GPIO1_IRQ (void);
void GPIO2_IRQ (void);

unsigned int GPIOIsrRegister( unsigned int inthIndex , isrpointer isrHandlerName );

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -