gpio.h — Maple v0.0.11 Documentation

### Navigation

- next
- previous |
- LeafLabs |
- Index »
- `libmaple` »
- APIs »

# `gpio.h`

[Stub] support.

## Library Documentation

> General purpose I/0 (GPIO) and Alternate Function I/O (AFIO) prototypes, defines, and inlined access functions.

> Defines

> > GPIOA_BASE

> >   GPIO port A register map base pointer.

> > GPIOB_BASE

> >   GPIO port B register map base pointer.

> > GPIOC_BASE

> >   GPIO port C register map base pointer.

> > GPIOD_BASE

> >   GPIO port D register map base pointer.

> > GPIO_CR_CNF

> > GPIO_CR_CNF_INPUT_ANALOG

> > GPIO_CR_CNF_INPUT_FLOATING

> > GPIO_CR_CNF_INPUT_PU_PD

> > GPIO_CR_CNF_OUTPUT_PP

> > GPIO_CR_CNF_OUTPUT_OD

> > GPIO_CR_CNF_AF_OUTPUT_PP

> > GPIO_CR_CNF_AF_OUTPUT_OD

> > GPIO_CR_MODE

> > GPIO_CR_MODE_INPUT

> > GPIO_CR_MODE_OUTPUT_10MHZ

> > GPIO_CR_MODE_OUTPUT_2MHZ

> > GPIO_CR_MODE_OUTPUT_50MHZ

> > AFIO_BASE

> >   AFIO register map base pointer.

> > AFIO_EVCR_EVOE

> > AFIO_EVCR_PORT_PA

> > AFIO_EVCR_PORT_PB

> > AFIO_EVCR_PORT_PC

> > AFIO_EVCR_PORT_PD

> > AFIO_EVCR_PORT_PE

> > AFIO_EVCR_PIN_0

> > AFIO_EVCR_PIN_1

> > AFIO_EVCR_PIN_2

> > AFIO_EVCR_PIN_3

> > AFIO_EVCR_PIN_4

> > AFIO_EVCR_PIN_5

> > AFIO_EVCR_PIN_6

> > AFIO_EVCR_PIN_7

> > AFIO_EVCR_PIN_8

> > AFIO_EVCR_PIN_9

> > AFIO_EVCR_PIN_10

> > AFIO_EVCR_PIN_11

> > AFIO_EVCR_PIN_12

> > AFIO_EVCR_PIN_13

> > AFIO_EVCR_PIN_14

> > AFIO_EVCR_PIN_15

> > AFIO_MAPR_SWJ_CFG

> > AFIO_MAPR_SWJ_CFG_FULL_SWJ

> > AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_NJRST

> > AFIO_MAPR_SWJ_CFG_NO_JTAG_SW

> > AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW

> > AFIO_MAPR_ADC2_ETRGREG_REMAP

> > AFIO_MAPR_ADC2_ETRGINJ_REMAP

> > AFIO_MAPR_ADC1_ETRGREG_REMAP

> > AFIO_MAPR_ADC1_ETRGINJ_REMAP

> > AFIO_MAPR_TIM5CH4_IREMAP

> > AFIO_MAPR_PD01_REMAP

> > AFIO_MAPR_CAN_REMAP

> > AFIO_MAPR_CAN_REMAP_NONE

> > AFIO_MAPR_CAN_REMAP_PB8_PB9

> > AFIO_MAPR_CAN_REMAP_PD0_PD1

> > AFIO_MAPR_TIM4_REMAP

> > AFIO_MAPR_TIM3_REMAP

> > AFIO_MAPR_TIM3_REMAP_NONE

> > AFIO_MAPR_TIM3_REMAP_PARTIAL

> > AFIO_MAPR_TIM3_REMAP_FULL

> > AFIO_MAPR_TIM2_REMAP

> > AFIO_MAPR_TIM2_REMAP_NONE

> > AFIO_MAPR_TIM2_REMAP_PA15_PB3_PA2_PA3

> > AFIO_MAPR_TIM2_REMAP_PA0_PA1_PB10_PB11

> > AFIO_MAPR_TIM2_REMAP_FULL

> > AFIO_MAPR_TIM1_REMAP

> > AFIO_MAPR_TIM1_REMAP_NONE

> > AFIO_MAPR_TIM1_REMAP_PARTIAL

> > AFIO_MAPR_TIM1_REMAP_FULL

> > AFIO_MAPR_USART3_REMAP

> > AFIO_MAPR_USART3_REMAP_NONE

> > AFIO_MAPR_USART3_REMAP_PARTIAL

> > AFIO_MAPR_USART3_REMAP_FULL

> > AFIO_MAPR_USART2_REMAP

> > AFIO_MAPR_USART1_REMAP

> > AFIO_MAPR_I2C1_REMAP

> > AFIO_MAPR_SPI1_REMAP

> > AFIO_EXTICR1_EXTI3

> > AFIO_EXTICR1_EXTI3_PA

> > AFIO_EXTICR1_EXTI3_PB

> > AFIO_EXTICR1_EXTI3_PC

> > AFIO_EXTICR1_EXTI3_PD

> > AFIO_EXTICR1_EXTI3_PE

> > AFIO_EXTICR1_EXTI3_PF

> > AFIO_EXTICR1_EXTI3_PG

> > AFIO_EXTICR1_EXTI2

> > AFIO_EXTICR1_EXTI2_PA

> > AFIO_EXTICR1_EXTI2_PB

> > AFIO_EXTICR1_EXTI2_PC

> > AFIO_EXTICR1_EXTI2_PD

> > AFIO_EXTICR1_EXTI2_PE

> > AFIO_EXTICR1_EXTI2_PF

> > AFIO_EXTICR1_EXTI2_PG

> > AFIO_EXTICR1_EXTI1

> > AFIO_EXTICR1_EXTI1_PA

> > AFIO_EXTICR1_EXTI1_PB

> > AFIO_EXTICR1_EXTI1_PC

> > AFIO_EXTICR1_EXTI1_PD

> > AFIO_EXTICR1_EXTI1_PE

> > AFIO_EXTICR1_EXTI1_PF

> > AFIO_EXTICR1_EXTI1_PG

> > AFIO_EXTICR1_EXTI0

> > AFIO_EXTICR1_EXTI0_PA

> > AFIO_EXTICR1_EXTI0_PB

> > AFIO_EXTICR1_EXTI0_PC

> > AFIO_EXTICR1_EXTI0_PD

> > AFIO_EXTICR1_EXTI0_PE

> > AFIO_EXTICR1_EXTI0_PF

> > AFIO_EXTICR1_EXTI0_PG

> > AFIO_EXTICR2_EXTI7

> > AFIO_EXTICR2_EXTI7_PA

> > AFIO_EXTICR2_EXTI7_PB

> > AFIO_EXTICR2_EXTI7_PC

> > AFIO_EXTICR2_EXTI7_PD

> > AFIO_EXTICR2_EXTI7_PE

> > AFIO_EXTICR2_EXTI7_PF

> > AFIO_EXTICR2_EXTI7_PG

> > AFIO_EXTICR2_EXTI6

> > AFIO_EXTICR2_EXTI6_PA

> > AFIO_EXTICR2_EXTI6_PB

> > AFIO_EXTICR2_EXTI6_PC

> > AFIO_EXTICR2_EXTI6_PD

> > AFIO_EXTICR2_EXTI6_PE

> > AFIO_EXTICR2_EXTI6_PF

> > AFIO_EXTICR2_EXTI6_PG

> > AFIO_EXTICR2_EXTI5

> > AFIO_EXTICR2_EXTI5_PA

> > AFIO_EXTICR2_EXTI5_PB

> > AFIO_EXTICR2_EXTI5_PC

> > AFIO_EXTICR2_EXTI5_PD

> > AFIO_EXTICR2_EXTI5_PE

> > AFIO_EXTICR2_EXTI5_PF

> > AFIO_EXTICR2_EXTI5_PG

> > AFIO_EXTICR2_EXTI4

> > AFIO_EXTICR2_EXTI4_PA

> > AFIO_EXTICR2_EXTI4_PB

> > AFIO_EXTICR2_EXTI4_PC

> > AFIO_EXTICR2_EXTI4_PD

> > AFIO_EXTICR2_EXTI4_PE

> > AFIO_EXTICR2_EXTI4_PF

> > AFIO_EXTICR2_EXTI4_PG

> > AFIO_MAPR2_FSMC_NADV

> > AFIO_MAPR2_TIM14_REMAP

> > AFIO_MAPR2_TIM13_REMAP

> > AFIO_MAPR2_TIM11_REMAP

> > AFIO_MAPR2_TIM10_REMAP

> > AFIO_MAPR2_TIM9_REMAP

> > AFIO_REMAP_USE_MAPR2

> Enums

> > afio_exti_port enum

> >   External interrupt line port selector.

> >   Used to determine which GPIO port to map an external interrupt line onto.

> >   Values:

> >   - `AFIO_EXTI_PA` -

> >     Use PAx pin.

> >   - `AFIO_EXTI_PB` -

> >     Use PBx pin.

> >   - `AFIO_EXTI_PC` -

> >     Use PCx pin.

> >   - `AFIO_EXTI_PD` -

> >     Use PDx pin.

> > gpio_pin_mode enum

> >   GPIO Pin modes.

> >   These only allow for 50MHZ max output speeds; if you want slower, use direct register access.

> >   Values:

> >   - `GPIO_OUTPUT_PP``= (GPIO_CR_CNF_OUTPUT_PP | GPIO_CR_MODE_OUTPUT_50MHZ)` -

> >     Output push-pull.

> >   - `GPIO_OUTPUT_OD``= (GPIO_CR_CNF_OUTPUT_OD | GPIO_CR_MODE_OUTPUT_50MHZ)` -

> >     Output open-drain.

> >   - `GPIO_AF_OUTPUT_PP``= (GPIO_CR_CNF_AF_OUTPUT_PP | GPIO_CR_MODE_OUTPUT_50MHZ)` -

> >     Alternate function output push-pull.

> >   - `GPIO_AF_OUTPUT_OD``= (GPIO_CR_CNF_AF_OUTPUT_OD | GPIO_CR_MODE_OUTPUT_50MHZ)` -

> >     Alternate function output open drain.

> >   - `GPIO_INPUT_ANALOG``= (GPIO_CR_CNF_INPUT_ANALOG | GPIO_CR_MODE_INPUT)` -

> >     Analog input.

> >   - `GPIO_INPUT_FLOATING``= (GPIO_CR_CNF_INPUT_FLOATING | GPIO_CR_MODE_INPUT)` -

> >     Input floating.

> >   - `GPIO_INPUT_PD``= (GPIO_CR_CNF_INPUT_PU_PD | GPIO_CR_MODE_INPUT)` -

> >     Input pull-down.

> >   - `GPIO_INPUT_PU` -

> >     Input pull-up.

> > afio_exti_num enum

> >   External interrupt line numbers.

> >   Values:

> >   - `AFIO_EXTI_0` -

> >     External interrupt line 0.

> >   - `AFIO_EXTI_1` -

> >     External interrupt line 1.

> >   - `AFIO_EXTI_2` -

> >     External interrupt line 2.

> >   - `AFIO_EXTI_3` -

> >     External interrupt line 3.

> >   - `AFIO_EXTI_4` -

> >     External interrupt line 4.

> >   - `AFIO_EXTI_5` -

> >     External interrupt line 5.

> >   - `AFIO_EXTI_6` -

> >     External interrupt line 6.

> >   - `AFIO_EXTI_7` -

> >     External interrupt line 7.

> >   - `AFIO_EXTI_8` -

> >     External interrupt line 8.

> >   - `AFIO_EXTI_9` -

> >     External interrupt line 9.

> >   - `AFIO_EXTI_10` -

> >     External interrupt line 10.

> >   - `AFIO_EXTI_11` -

> >     External interrupt line 11.

> >   - `AFIO_EXTI_12` -

> >     External interrupt line 12.

> >   - `AFIO_EXTI_13` -

> >     External interrupt line 13.

> >   - `AFIO_EXTI_14` -

> >     External interrupt line 14.

> >   - `AFIO_EXTI_15` -

> >     External interrupt line 15.

> > afio_remap_peripheral enum

> >   Available peripheral remaps.

> >   Values:

> >   - `AFIO_REMAP_ADC2_ETRGREG``= AFIO_MAPR_ADC2_ETRGREG_REMAP` -

> >     ADC 2 external trigger regular conversion remapping.

> >   - `AFIO_REMAP_ADC2_ETRGINJ``= AFIO_MAPR_ADC2_ETRGINJ_REMAP` -

> >     ADC 2 external trigger injected conversion remapping.

> >   - `AFIO_REMAP_ADC1_ETRGREG``= AFIO_MAPR_ADC1_ETRGREG_REMAP` -

> >     ADC 1 external trigger regular conversion remapping.

> >   - `AFIO_REMAP_ADC1_ETRGINJ``= AFIO_MAPR_ADC1_ETRGINJ_REMAP` -

> >     ADC 1 external trigger injected conversion remapping.

> >   - `AFIO_REMAP_TIM5CH4_I``= AFIO_MAPR_TIM5CH4_IREMAP` -

> >     Timer 5 channel 4 internal remapping.

> >   - `AFIO_REMAP_PD01``= AFIO_MAPR_PD01_REMAP` -

> >     Port D0/Port D1 mapping on OSC_IN/OSC_OUT.

> >   - `AFIO_REMAP_CAN_1``= AFIO_MAPR_CAN_REMAP_PB8_PB9` -

> >     CAN alternate function remapping 1 (RX on PB8, TX on PB9).

> >   - `AFIO_REMAP_CAN_2``= AFIO_MAPR_CAN_REMAP_PD0_PD1` -

> >     CAN alternate function remapping 2 (RX on PD0, TX on PD1).

> >   - `AFIO_REMAP_TIM4``= AFIO_MAPR_TIM4_REMAP` -

> >     Timer 4 remapping.

> >   - `AFIO_REMAP_TIM3_PARTIAL``= AFIO_MAPR_TIM3_REMAP_PARTIAL` -

> >     Timer 3 partial remapping.

> >   - `AFIO_REMAP_TIM3_FULL``= AFIO_MAPR_TIM3_REMAP_FULL` -

> >     Timer 3 full remapping.

> >   - `AFIO_REMAP_TIM2_PARTIAL_1``= AFIO_MAPR_TIM2_REMAP_PA15_PB3_PA2_PA3` -

> >     Timer 2 partial remapping 1 (CH1 and ETR on PA15, CH2 on PB3, CH3 on PA2, CH4 on PA3).

> >   - `AFIO_REMAP_TIM2_PARTIAL_2``= AFIO_MAPR_TIM2_REMAP_PA0_PA1_PB10_PB11` -

> >     Timer 2 partial remapping 2 (CH1 and ETR on PA0, CH2 on PA1, CH3 on PB10, CH4 on PB11).

> >   - `AFIO_REMAP_TIM2_FULL``= AFIO_MAPR_TIM2_REMAP_FULL` -

> >     Timer 2 full remapping.

> >   - `AFIO_REMAP_USART2``= AFIO_MAPR_USART2_REMAP` -

> >     USART 2 remapping.

> >   - `AFIO_REMAP_USART1``= AFIO_MAPR_USART1_REMAP` -

> >     USART 1 remapping.

> >   - `AFIO_REMAP_I2C1``= AFIO_MAPR_I2C1_REMAP` -

> >     I2C 1 remapping.

> >   - `AFIO_REMAP_SPI1``= AFIO_MAPR_SPI1_REMAP` -

> >     SPI 1 remapping.

> >   - `AFIO_REMAP_FSMC_NADV``= (AFIO_MAPR2_FSMC_NADV | AFIO_REMAP_USE_MAPR2)` -

> >     NADV signal not connected.

> >   - `AFIO_REMAP_TIM14``= (AFIO_MAPR2_TIM14_REMAP | AFIO_REMAP_USE_MAPR2)` -

> >     Timer 14 remapping.

> >   - `AFIO_REMAP_TIM13``= (AFIO_MAPR2_TIM13_REMAP | AFIO_REMAP_USE_MAPR2)` -

> >     Timer 13 remapping.

> >   - `AFIO_REMAP_TIM11``= (AFIO_MAPR2_TIM11_REMAP | AFIO_REMAP_USE_MAPR2)` -

> >     Timer 11 remapping.

> >   - `AFIO_REMAP_TIM10``= (AFIO_MAPR2_TIM10_REMAP | AFIO_REMAP_USE_MAPR2)` -

> >     Timer 10 remapping.

> >   - `AFIO_REMAP_TIM9``= (AFIO_MAPR2_TIM9_REMAP | AFIO_REMAP_USE_MAPR2)` -

> >     Timer 9.

> > afio_debug_cfg enum

> >   Debug port configuration.

> >   Used to configure the behavior of JTAG and Serial Wire (SW) debug ports and their associated GPIO pins.

> >   Values:

> >   - `AFIO_DEBUG_FULL_SWJ``= AFIO_MAPR_SWJ_CFG_FULL_SWJ` -

> >     Full Serial Wire and JTAG debug.

> >   - `AFIO_DEBUG_FULL_SWJ_NO_NJRST``= AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_NJRST` -

> >     Full Serial Wire and JTAG, but no NJTRST.

> >   - `AFIO_DEBUG_SW_ONLY``= AFIO_MAPR_SWJ_CFG_NO_JTAG_SW` -

> >     Serial Wire debug only (JTAG-DP disabled, SW-DP enabled).

> >   - `AFIO_DEBUG_NONE``= AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW` -

> >     No debug; all JTAG and SW pins are free for use as GPIOs.

> Functions

> > void gpio_init(gpio_dev * dev)

> >   Initialize a GPIO device.

> >   Enables the clock for and resets the given device.

> >   Parameters:

> >   - `dev` -

> >     GPIO device to initialize.

> > void gpio_init_all(void )

> >   Initialize and reset all available GPIO devices.

> > void gpio_set_mode(gpio_dev * dev, uint8 pin, gpio_pin_mode mode)

> >   Set the mode of a GPIO pin.

> >   Parameters:

> >   - `dev` -

> >     GPIO device.

> >   - `pin` -

> >     Pin on the device whose mode to set, 0–15.

> >   - `mode` -

> >     General purpose or alternate function mode to set the pin to.

> >   See: | gpio_pin_mode

> > afio_exti_port gpio_exti_port(gpio_dev * dev)

> >   Get a GPIO port’s corresponding afio_exti_port.

> >   Parameters:

> >   - `dev` -

> >     GPIO device whose afio_exti_port to return.

> > void gpio_write_bit(gpio_dev * dev, uint8 pin, uint8 val)

> >   Set or reset a GPIO pin.

> >   Pin must have previously been configured to output mode.

> >   Parameters:

> >   - `dev` -

> >     GPIO device whose pin to set.

> >   - `pin` -

> >     Pin on to set or reset

> >   - `val` -

> >     If true, set the pin. If false, reset the pin.

> > uint32 gpio_read_bit(gpio_dev * dev, uint8 pin)

> >   Determine whether or not a GPIO pin is set.

> >   Pin must have previously been configured to input mode.

> >   Parameters:

> >   - `dev` -

> >     GPIO device whose pin to test.

> >   - `pin` -

> >     Pin on dev to test.

> >   Return: | True if the pin is set, false otherwise.

> > void gpio_toggle_bit(gpio_dev * dev, uint8 pin)

> >   Toggle a pin configured as output push-pull.

> >   Parameters:

> >   - `dev` -

> >     GPIO device.

> >   - `pin` -

> >     Pin on dev to toggle.

> > void afio_init(void )

> >   Initialize the AFIO clock, and reset the AFIO registers.

> > void afio_exti_select(afio_exti_num exti, afio_exti_port gpio_port)

> >   Select a source input for an external interrupt.

> >   Parameters:

> >   - `exti` -

> >     External interrupt.

> >   - `gpio_port` -

> >     Port which contains pin to use as source input.

> >   See: | afio_exti_num afio_exti_port

> > void afio_remap(afio_remap_peripheral premapping)

> >   Perform an alternate function remap.

> >   Parameters:

> >   - `remapping` -

> >     Remapping to perform.

> > void afio_cfg_debug_ports(afio_debug_cfg config)

> >   Enable or disable the JTAG and SW debug ports.

> >   Parameters:

> >   - `config` -

> >     Desired debug port configuration

> >   See: | afio_debug_cfg

> Variables

> > gpio_dev gpioa

> >   GPIO initialization routine.

> > gpio_dev *const GPIOA

> >   GPIO port A device.

> > gpio_dev gpiob

> > gpio_dev *const GPIOB

> >   GPIO port B device.

> > gpio_dev gpioc

> > gpio_dev *const GPIOC

> >   GPIO port C device.

> > gpio_dev gpiod

> > gpio_dev *const GPIOD

> >   GPIO port D device.

> class gpio_reg_map

> > GPIO register map type.

> > Public Members

> > > __io uint32 CRL

> > >   Port configuration register low.

> > > __io uint32 CRH

> > >   Port configuration register high.

> > > __io uint32 IDR

> > >   Port input data register.

> > > __io uint32 ODR

> > >   Port output data register.

> > > __io uint32 BSRR

> > >   Port bit set/reset register.

> > > __io uint32 BRR

> > >   Port bit reset register.

> > > __io uint32 LCKR

> > >   Port configuration lock register.

> class gpio_dev

> > GPIO device type.

> > Public Members

> > > gpio_reg_map * regs

> > >   Register map.

> > > rcc_clk_id clk_id

> > >   RCC clock information.

> > > afio_exti_port exti_port

> > >   AFIO external interrupt port value.

> class afio_reg_map

> > AFIO register map.

> > Public Members

> > > __io uint32 EVCR

> > >   Event control register.

> > > __io uint32 MAPR

> > >   AF remap and debug I/O configuration register.

> > > __io uint32 EXTICR1

> > >   External interrupt configuration register 1.

> > > __io uint32 EXTICR2

> > >   External interrupt configuration register 2.

> > > __io uint32 EXTICR3

> > >   External interrupt configuration register 3.

> > > __io uint32 EXTICR4

> > >   External interrupt configuration register 4.

> > > __io uint32 MAPR2

> > >   AF remap and debug I/O configuration register 2.

### Navigation

- next
- previous |
- LeafLabs |
- Index »
- `libmaple` »
- APIs »