[Stub] support.
General purpose I/0 (GPIO) and Alternate Function I/O (AFIO) prototypes, defines, and inlined access functions.
DefinesEnums
- 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
Functions
- 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.
Variables
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: 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: void afio_remap(afio_remap_peripheral p remapping)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: 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.