📄 gpio_w.h
字号:
*(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 + -