libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
gpio_common_hglg.h File Reference
Include dependency graph for gpio_common_hglg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GPIO_P(i)   (GPIO_BASE + (0x24 * (i)))
 
#define GPIO_PA   GPIO_P(0)
 
#define GPIO_PB   GPIO_P(1)
 
#define GPIO_PC   GPIO_P(2)
 
#define GPIO_PD   GPIO_P(3)
 
#define GPIO_PE   GPIO_P(4)
 
#define GPIO_PF   GPIO_P(5)
 
#define GPIO_P_CTRL(port)   MMIO32((port) + 0x00)
 
#define GPIO_PA_CTRL   GPIO_P_CTRL(GPIO_PA)
 
#define GPIO_PB_CTRL   GPIO_P_CTRL(GPIO_PB)
 
#define GPIO_PC_CTRL   GPIO_P_CTRL(GPIO_PC)
 
#define GPIO_PD_CTRL   GPIO_P_CTRL(GPIO_PD)
 
#define GPIO_PE_CTRL   GPIO_P_CTRL(GPIO_PE)
 
#define GPIO_PF_CTRL   GPIO_P_CTRL(GPIO_PF)
 
#define GPIO_P_CTRL_DRIVEMODE_SHIFT   (0)
 
#define GPIO_P_CTRL_DRIVEMODE_MASK   (0x03 << GPIO_P_CTRL_DRIVEMODE_SHIFT)
 
#define GPIO_P_CTRL_DRIVEMODE(v)    (((v) << GPIO_P_CTRL_DRIVEMODE_SHIFT) & GPIO_P_CTRL_DRIVEMODE_MASK)
 
#define GPIO_P_CTRL_DRIVEMODE_STANDARD   GPIO_P_CTRL_DRIVEMODE(0)
 
#define GPIO_P_CTRL_DRIVEMODE_LOWEST   GPIO_P_CTRL_DRIVEMODE(1)
 
#define GPIO_P_CTRL_DRIVEMODE_HIGH   GPIO_P_CTRL_DRIVEMODE(2)
 
#define GPIO_P_CTRL_DRIVEMODE_LOW   GPIO_P_CTRL_DRIVEMODE(3)
 
#define GPIO_P_MODE_MODEx_MASK(x)   (0x0F << (((x) & 0x7) * 4))
 
#define GPIO_P_MODE_MODEx(x, mode)    (((mode) << (((x) & 0x7) * 4)) & GPIO_P_MODE_MODEx_MASK(x))
 
#define GPIO_P_MODEL(port)   MMIO32((port) + 0x04)
 
#define GPIO_PA_MODEL   GPIO_P_MODEL(GPIO_PA)
 
#define GPIO_PB_MODEL   GPIO_P_MODEL(GPIO_PB)
 
#define GPIO_PC_MODEL   GPIO_P_MODEL(GPIO_PC)
 
#define GPIO_PD_MODEL   GPIO_P_MODEL(GPIO_PD)
 
#define GPIO_PE_MODEL   GPIO_P_MODEL(GPIO_PE)
 
#define GPIO_P_MODEL_MODEx_MASK(x)   GPIO_P_MODE_MODEx_MASK(x)
 
#define GPIO_P_MODEL_MODEx(x, mode)   GPIO_P_MODE_MODEx(x, mode)
 
#define GPIO_P_MODEL_MODE0_MASK   GPIO_P_MODEL_MODEx_MASK(0)
 
#define GPIO_P_MODEL_MODE0(mode)   GPIO_P_MODEL_MODEx(0, mode)
 
#define GPIO_P_MODEL_MODE1_MASK   GPIO_P_MODEL_MODEx_MASK(1)
 
#define GPIO_P_MODEL_MODE1(mode)   GPIO_P_MODEL_MODEx(1, mode)
 
#define GPIO_P_MODEL_MODE2_MASK   GPIO_P_MODEL_MODEx_MASK(2)
 
#define GPIO_P_MODEL_MODE2(mode)   GPIO_P_MODEL_MODEx(2, mode)
 
#define GPIO_P_MODEL_MODE3_MASK   GPIO_P_MODEL_MODEx_MASK(3)
 
#define GPIO_P_MODEL_MODE3(mode)   GPIO_P_MODEL_MODEx(3, mode)
 
#define GPIO_P_MODEL_MODE4_MASK   GPIO_P_MODEL_MODEx_MASK(4)
 
#define GPIO_P_MODEL_MODE4(mode)   GPIO_P_MODEL_MODEx(4, mode)
 
#define GPIO_P_MODEL_MODE5_MASK   GPIO_P_MODEL_MODEx_MASK(5)
 
#define GPIO_P_MODEL_MODE5(mode)   GPIO_P_MODEL_MODEx(5, mode)
 
#define GPIO_P_MODEL_MODE6_MASK   GPIO_P_MODEL_MODEx_MASK(6)
 
#define GPIO_P_MODEL_MODE6(mode)   GPIO_P_MODEL_MODEx(6, mode)
 
#define GPIO_P_MODEL_MODE7_MASK   GPIO_P_MODEL_MODEx_MASK(7)
 
#define GPIO_P_MODEL_MODE7(mode)   GPIO_P_MODEL_MODEx(7, mode)
 
#define GPIO_P_MODEH(port)   MMIO32((port) + 0x08)
 
#define GPIO_PA_MODEH   GPIO_P_MODEH(GPIO_PA)
 
#define GPIO_PB_MODEH   GPIO_P_MODEH(GPIO_PB)
 
#define GPIO_PC_MODEH   GPIO_P_MODEH(GPIO_PC)
 
#define GPIO_PD_MODEH   GPIO_P_MODEH(GPIO_PD)
 
#define GPIO_PE_MODEH   GPIO_P_MODEH(GPIO_PE)
 
#define GPIO_P_MODEH_MODEx_MASK(x)   GPIO_P_MODE_MODEx_MASK((x) - 8)
 
#define GPIO_P_MODEH_MODEx(x, mode)   GPIO_P_MODE_MODEx((x) - 8, mode)
 
#define GPIO_P_MODEH_MODE8_MASK   GPIO_P_MODEH_MODEx_MASK(8)
 
#define GPIO_P_MODEH_MODE8(mode)   GPIO_P_MODEH_MODEx(8, mode)
 
#define GPIO_P_MODEH_MODE9_MASK   GPIO_P_MODEH_MODEx_MASK(9)
 
#define GPIO_P_MODEH_MODE9(mode)   GPIO_P_MODEH_MODEx(9, mode)
 
#define GPIO_P_MODEH_MODE10_MASK   GPIO_P_MODEH_MODEx_MASK(10)
 
#define GPIO_P_MODEH_MODE10(mode)   GPIO_P_MODEH_MODEx(10, mode)
 
#define GPIO_P_MODEH_MODE11_MASK   GPIO_P_MODEH_MODEx_MASK(11)
 
#define GPIO_P_MODEH_MODE11(mode)   GPIO_P_MODEH_MODEx(11, mode)
 
#define GPIO_P_MODEH_MODE12_MASK   GPIO_P_MODEH_MODEx_MASK(12)
 
#define GPIO_P_MODEH_MODE12(mode)   GPIO_P_MODEH_MODEx(12, mode)
 
#define GPIO_P_MODEH_MODE13_MASK   GPIO_P_MODEH_MODEx_MASK(13)
 
#define GPIO_P_MODEH_MODE13(mode)   GPIO_P_MODEH_MODEx(13, mode)
 
#define GPIO_P_MODEH_MODE14_MASK   GPIO_P_MODEH_MODEx_MASK(14)
 
#define GPIO_P_MODEH_MODE14(mode)   GPIO_P_MODEH_MODEx(14, mode)
 
#define GPIO_P_MODEH_MODE15_MASK   GPIO_P_MODEH_MODEx_MASK(15)
 
#define GPIO_P_MODEH_MODE15(mode)   GPIO_P_MODEH_MODEx(15, mode)
 
#define GPIO_P_DOUT(port)   MMIO32((port) + 0x0C)
 
#define GPIO_PA_DOUT   GPIO_P_DOUT(GPIO_PA)
 
#define GPIO_PB_DOUT   GPIO_P_DOUT(GPIO_PB)
 
#define GPIO_PC_DOUT   GPIO_P_DOUT(GPIO_PC)
 
#define GPIO_PD_DOUT   GPIO_P_DOUT(GPIO_PD)
 
#define GPIO_PE_DOUT   GPIO_P_DOUT(GPIO_PE)
 
#define GPIO_P_DOUTSET(port)   MMIO32((port) + 0x10)
 
#define GPIO_PA_DOUTSET   GPIO_P_DOUTSET(GPIO_PA)
 
#define GPIO_PB_DOUTSET   GPIO_P_DOUTSET(GPIO_PB)
 
#define GPIO_PC_DOUTSET   GPIO_P_DOUTSET(GPIO_PC)
 
#define GPIO_PD_DOUTSET   GPIO_P_DOUTSET(GPIO_PD)
 
#define GPIO_PE_DOUTSET   GPIO_P_DOUTSET(GPIO_PE)
 
#define GPIO_P_DOUTCLR(port)   MMIO32((port) + 0x14)
 
#define GPIO_PA_DOUTCLR   GPIO_P_DOUTCLR(GPIO_PA)
 
#define GPIO_PB_DOUTCLR   GPIO_P_DOUTCLR(GPIO_PB)
 
#define GPIO_PC_DOUTCLR   GPIO_P_DOUTCLR(GPIO_PC)
 
#define GPIO_PD_DOUTCLR   GPIO_P_DOUTCLR(GPIO_PD)
 
#define GPIO_PE_DOUTCLR   GPIO_P_DOUTCLR(GPIO_PE)
 
#define GPIO_P_DOUTTGL(port)   MMIO32((port) + 0x18)
 
#define GPIO_PA_DOUTTGL   GPIO_P_DOUTTGL(GPIO_PA)
 
#define GPIO_PB_DOUTTGL   GPIO_P_DOUTTGL(GPIO_PB)
 
#define GPIO_PC_DOUTTGL   GPIO_P_DOUTTGL(GPIO_PC)
 
#define GPIO_PD_DOUTTGL   GPIO_P_DOUTTGL(GPIO_PD)
 
#define GPIO_PE_DOUTTGL   GPIO_P_DOUTTGL(GPIO_PE)
 
#define GPIO_P_DIN(port)   MMIO32((port) + 0x1C)
 
#define GPIO_PA_DIN   GPIO_P_DIN(GPIO_PA)
 
#define GPIO_PB_DIN   GPIO_P_DIN(GPIO_PB)
 
#define GPIO_PC_DIN   GPIO_P_DIN(GPIO_PC)
 
#define GPIO_PD_DIN   GPIO_P_DIN(GPIO_PD)
 
#define GPIO_PE_DIN   GPIO_P_DIN(GPIO_PE)
 
#define GPIO_P_PINLOCKN(port)   MMIO32((port) + 0x20)
 
#define GPIO_PA_PINLOCKN   GPIO_P_PINLOCKN(GPIO_PA)
 
#define GPIO_PB_PINLOCKN   GPIO_P_PINLOCKN(GPIO_PB)
 
#define GPIO_PC_PINLOCKN   GPIO_P_PINLOCKN(GPIO_PC)
 
#define GPIO_PD_PINLOCKN   GPIO_P_PINLOCKN(GPIO_PD)
 
#define GPIO_PE_PINLOCKN   GPIO_P_PINLOCKN(GPIO_PE)
 
#define GPIO_EXTIPSELL   MMIO32(GPIO_BASE + 0x100)
 
#define GPIO_EXTIPSELH   MMIO32(GPIO_BASE + 0x104)
 
#define GPIO_EXTIRISE   MMIO32(GPIO_BASE + 0x108)
 
#define GPIO_EXTIFALL   MMIO32(GPIO_BASE + 0x10C)
 
#define GPIO_IEN   MMIO32(GPIO_BASE + 0x110)
 
#define GPIO_IF   MMIO32(GPIO_BASE + 0x114)
 
#define GPIO_IFS   MMIO32(GPIO_BASE + 0x118)
 
#define GPIO_IFC   MMIO32(GPIO_BASE + 0x11C)
 
#define GPIO_ROUTE   MMIO32(GPIO_BASE + 0x120)
 
#define GPIO_INSENSE   MMIO32(GPIO_BASE + 0x124)
 
#define GPIO_LOCK   MMIO32(GPIO_BASE + 0x128)
 
#define GPIO_CTRL   MMIO32(GPIO_BASE + 0x12C)
 
#define GPIO_CMD   MMIO32(GPIO_BASE + 0x130)
 
#define GPIO_EM4WUEN   MMIO32(GPIO_BASE + 0x134)
 
#define GPIO_EM4WUPOL   MMIO32(GPIO_BASE + 0x138)
 
#define GPIO_EM4WUCAUSE   MMIO32(GPIO_BASE + 0x13C)
 
#define GPIO_EXTIPSEL_MASK(n)   (0x7 << ((n) & 0xF))
 
#define GPIO_EXTIPSEL_PORTMASK(n, v)   ((v) << ((n) & 0xF))
 
#define GPIO_EXTIPSEL_PORTA   0x0
 
#define GPIO_EXTIPSEL_PORTB   0x1
 
#define GPIO_EXTIPSEL_PORTC   0x2
 
#define GPIO_EXTIPSEL_PORTD   0x3
 
#define GPIO_EXTIPSEL_PORTE   0x4
 
#define GPIO_EXTIPSEL_PORTF   0x5
 
#define GPIO_ROUTE_SWCLKPEN   (1 << 0)
 
#define GPIO_ROUTE_SWDIOPEN   (1 << 1)
 
#define GPIO_ROUTE_SWOPEN   (1 << 3)
 
#define GPIO_ROUTE_SWLOCATION_SHIFT   (8)
 
#define GPIO_ROUTE_SWLOCATION_MASK   (0x3 << GPIO_ROUTE_SWLOCATION_SHIFT)
 
#define GPIO_ROUTE_SWLOCATION(v)    (((v) << GPIO_ROUTE_SWLOCATION_SHIFT) & GPIO_ROUTE_SWLOCATION_MASK)
 
#define GPIO_ROUTE_TCLKPEN   (1 << 12)
 
#define GPIO_ROUTE_TD0PEN   (1 << 13)
 
#define GPIO_ROUTE_TD1PEN   (1 << 14)
 
#define GPIO_ROUTE_TD2PEN   (1 << 15)
 
#define GPIO_ROUTE_TD3PEN   (1 << 16)
 
#define GPIO_ROUTE_ETMLOCATION_SHIFT   (24)
 
#define GPIO_ROUTE_ETMLOCATION_MASK   (0x3 << GPIO_ROUTE_ETMLOCATION_SHIFT)
 
#define GPIO_ROUTE_ETMLOCATION(v)    (((v) << GPIO_ROUTE_ETMLOCATION_SHIFT) & GPIO_ROUTE_ETMLOCATION_MASK)
 
#define GPIO_ROUTE_ETMLOCATION_LOCx(x)   GPIO_ROUTE_ETMLOCATION(x)
 
#define GPIO_ROUTE_ETMLOCATION_LOC0   GPIO_ROUTE_ETMLOCATION_LOCx(0)
 
#define GPIO_ROUTE_ETMLOCATION_LOC1   GPIO_ROUTE_ETMLOCATION_LOCx(1)
 
#define GPIO_ROUTE_ETMLOCATION_LOC2   GPIO_ROUTE_ETMLOCATION_LOCx(2)
 
#define GPIO_ROUTE_ETMLOCATION_LOC3   GPIO_ROUTE_ETMLOCATION_LOCx(3)
 
#define GPIO_INSENSE_INT   (1 << 0)
 
#define GPIO_INSENSE_PRS   (1 << 1)
 
#define GPIO_LOCK_LOCKKEY_SHIFT   (0)
 
#define GPIO_LOCK_LOCKKEY_MASK   (0xFFFF << GPIO_LOCK_LOCKKEY_SHIFT)
 
#define GPIO_LOCK_LOCKKEY_UNLOCKED   (0x0000 << GPIO_LOCK_LOCKKEY_SHIFT)
 
#define GPIO_LOCK_LOCKKEY_LOCKED   (0x0001 << GPIO_LOCK_LOCKKEY_SHIFT)
 
#define GPIO_LOCK_LOCKKEY_LOCK   (0x0000 << GPIO_LOCK_LOCKKEY_SHIFT)
 
#define GPIO_LOCK_LOCKKEY_UNLOCK   (0xA534 << GPIO_LOCK_LOCKKEY_SHIFT)
 
#define GPIO_CTRL_EM4RET   (1 << 0)
 
#define GPIO_CMD_EM4WUCLR   (1 << 0)
 
#define GPIO_EM4WUEN_EM4WUEN_A0   (1 << 0)
 
#define GPIO_EM4WUEN_EM4WUEN_A6   (1 << 1)
 
#define GPIO_EM4WUEN_EM4WUEN_C9   (1 << 2)
 
#define GPIO_EM4WUEN_EM4WUEN_F1   (1 << 3)
 
#define GPIO_EM4WUEN_EM4WUEN_F2   (1 << 4)
 
#define GPIO_EM4WUEN_EM4WUEN_E13   (1 << 5)
 
#define GPIO_EM4WUPOL_EM4WUPOL_A0   (1 << 0)
 
#define GPIO_EM4WUPOL_EM4WUPOL_A6   (1 << 1)
 
#define GPIO_EM4WUPOL_EM4WUPOL_C9   (1 << 2)
 
#define GPIO_EM4WUPOL_EM4WUPOL_F1   (1 << 3)
 
#define GPIO_EM4WUPOL_EM4WUPOL_F2   (1 << 4)
 
#define GPIO_EM4WUPOL_EM4WUPOL_E13   (1 << 5)
 
#define GPIO0   (1 << 0)
 
#define GPIO1   (1 << 1)
 
#define GPIO2   (1 << 2)
 
#define GPIO3   (1 << 3)
 
#define GPIO4   (1 << 4)
 
#define GPIO5   (1 << 5)
 
#define GPIO6   (1 << 6)
 
#define GPIO7   (1 << 7)
 
#define GPIO8   (1 << 8)
 
#define GPIO9   (1 << 9)
 
#define GPIO10   (1 << 10)
 
#define GPIO11   (1 << 11)
 
#define GPIO12   (1 << 12)
 
#define GPIO13   (1 << 13)
 
#define GPIO14   (1 << 14)
 
#define GPIO15   (1 << 15)
 
#define GPIO_ALL   (0xFFFF)
 
#define GPIOA   GPIO_PA
 
#define GPIOB   GPIO_PB
 
#define GPIOC   GPIO_PC
 
#define GPIOD   GPIO_PD
 
#define GPIOE   GPIO_PE
 
#define GPIOF   GPIO_PF
 

Enumerations

enum  gpio_mode {
  GPIO_MODE_DISABLE = 0 , GPIO_MODE_INPUT , GPIO_MODE_INPUT_PULL , GPIO_MODE_INPUT_PULL_FILTER ,
  GPIO_MODE_PUSH_PULL , GPIO_MODE_PUSH_PULL_DRIVE , GPIO_MODE_WIRED_OR , GPIO_MODE_WIRED_OR_PULL_DOWN ,
  GPIO_MODE_WIRED_AND , GPIO_MODE_WIRED_AND_FILTER , GPIO_MODE_WIRED_AND_PULLUP , GPIO_MODE_WIRED_AND_PULLUP_FILTER ,
  GPIO_MODE_WIRED_AND_DRIVE , GPIO_MODE_WIRED_AND_DRIVE_FILTER , GPIO_MODE_WIRED_AND_DRIVE_PULLUP , GPIO_MODE_WIRED_AND_DRIVE_PULLUP_FILTER
}
 
enum  gpio_drive_strength { GPIO_STRENGTH_STANDARD = 0 , GPIO_STRENGTH_LOWEST , GPIO_STRENGTH_HIGH , GPIO_STRENGTH_LOW }
 

Functions

void gpio_enable_lock (void)
 Enable GPIO registers lock. More...
 
void gpio_disable_lock (void)
 Disable GPIO registers lock. More...
 
bool gpio_get_lock_flag (void)
 Get GPIO register lock flag. More...
 
void gpio_set_drive_strength (uint32_t gpio_port, enum gpio_drive_strength driver_stength)
 Set port pins drive strength. More...
 
void gpio_mode_setup (uint32_t gpio_port, enum gpio_mode mode, uint16_t gpios)
 Set port pins mode. More...
 
void gpio_set (uint32_t gpio_port, uint16_t gpios)
 Set port pins output value (Atomic) More...
 
void gpio_clear (uint32_t gpio_port, uint16_t gpios)
 Set port pins output value (Atomic) More...
 
uint16_t gpio_get (uint32_t gpio_port, uint16_t gpios)
 Get port pins input value. More...
 
void gpio_toggle (uint32_t gpio_port, uint16_t gpios)
 Toggle port pins output value (Atomic) More...
 
uint16_t gpio_port_read (uint32_t gpio_port)
 Get port (all) input value's. More...
 
void gpio_port_write (uint32_t gpio_port, uint16_t data)
 Set port (all) output value's. More...
 
void gpio_port_config_lock (uint32_t gpio_port, uint16_t gpios)
 Lock the Configuration of a Group of Pins. More...