6#ifndef PHAL_G4_GPIO_PRIV_H
7#define PHAL_G4_GPIO_PRIV_H
69 "MODER field width doesn't match GPIO_PRIV_MODER_FIELD_BITS");
71 "OSPEEDR field width doesn't match GPIO_PRIV_OSPEEDR_FIELD_BITS");
73 "OTYPER field width doesn't match GPIO_PRIV_OTYPER_FIELD_BITS");
75 "PUPDR field width doesn't match GPIO_PRIV_PUPDR_FIELD_BITS");
77 "AFR field width doesn't match GPIO_PRIV_AFR_FIELD_BITS");
79static_assert(GPIOB_BASE - GPIOA_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
80static_assert(GPIOC_BASE - GPIOB_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
81static_assert(GPIOD_BASE - GPIOC_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
82static_assert(GPIOE_BASE - GPIOD_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
83static_assert(GPIOF_BASE - GPIOE_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
84static_assert(GPIOG_BASE - GPIOF_BASE ==
GPIO_PRIV_PORT_STRIDE,
"GPIO port base address spacing changed");
static constexpr uint32_t GPIO_PRIV_PUPDR_FIELD_BITS
Definition gpio_priv.h:16
static constexpr uint32_t GPIO_PRIV_AFR_FIELD_BITS
Definition gpio_priv.h:17
void PHAL_GPIO_priv_toggle(GPIO_TypeDef *bank, uint8_t pin)
Read then invert pin via BSRR. Caller must have validated pin <= 15.
Definition gpio_priv.c:134
bool PHAL_GPIO_priv_read(const GPIO_TypeDef *bank, uint8_t pin)
Read IDR's bit for pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:118
static constexpr uint32_t GPIO_PRIV_MODER_FIELD_BITS
Definition gpio_priv.h:13
void PHAL_GPIO_priv_setAltFunction(GPIO_TypeDef *bank, uint8_t pin, uint8_t af_num)
Set AFR's field for pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:108
static constexpr uint32_t GPIO_PRIV_PORT_STRIDE
Definition gpio_priv.h:20
void PHAL_GPIO_priv_setPull(GPIO_TypeDef *bank, uint8_t pin, PHAL_GPIO_InputPull_t pull)
Set PUPDR's field for pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:101
static constexpr uint32_t GPIO_PRIV_RCC_ENABLE_BITS[]
Definition gpio_priv.h:24
void PHAL_GPIO_priv_setOutputSpeed(GPIO_TypeDef *bank, uint8_t pin, PHAL_GPIO_OutputSpeed_t speed)
Set OSPEEDR's field for pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:85
static constexpr uint32_t GPIO_PRIV_NUM_PORTS
Definition gpio_priv.h:33
void PHAL_GPIO_priv_write(GPIO_TypeDef *bank, uint8_t pin, bool value)
Write BSRR to atomically set/reset pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:123
bool PHAL_GPIO_priv_enableClock(GPIO_TypeDef *bank)
Enable the AHB2 clock for bank's port (GPIOA-GPIOG).
Definition gpio_priv.c:59
static constexpr uint32_t GPIO_PRIV_OSPEEDR_FIELD_BITS
Definition gpio_priv.h:14
void PHAL_GPIO_priv_setMode(GPIO_TypeDef *bank, uint8_t pin, PHAL_GPIO_PinType_t type)
Set MODER's field for pin to type. Caller must have validated pin <= 15.
Definition gpio_priv.c:77
void PHAL_GPIO_priv_setOutputType(GPIO_TypeDef *bank, uint8_t pin, PHAL_GPIO_OutputPull_t otype)
Set OTYPER's field for pin. Caller must have validated pin <= 15.
Definition gpio_priv.c:93
static constexpr uint32_t GPIO_PRIV_OTYPER_FIELD_BITS
Definition gpio_priv.h:15
PHAL_GPIO_OutputSpeed_t
Output pin slew rate / maximum toggle frequency.
Definition gpio.h:29
PHAL_GPIO_PinType_t
GPIO pin mode.
Definition gpio.h:19
PHAL_GPIO_InputPull_t
Input pin pull-up/pull-down resistor selection.
Definition gpio.h:46
PHAL_GPIO_OutputPull_t
Output pin drive type.
Definition gpio.h:38