diff --git a/arch/stm32f429/registers/gpio.c b/arch/stm32f429/registers/gpio.c index a9cce351b..6e00ef5a2 100644 --- a/arch/stm32f429/registers/gpio.c +++ b/arch/stm32f429/registers/gpio.c @@ -17,6 +17,7 @@ #define GPIO_OSPEEDR_OFFSET 0x08 #define GPIO_PUPDR_OFFSET 0x0C #define GPIO_IDR_OFFSET 0x10 +#define GPIO_ODR_OFFSET 0x14 char * GPIO_REGISTER_ADDRESS(GPIO_t gpio, int registerOffset) { char * gpioBaseAddress[11] = { @@ -28,7 +29,6 @@ char * GPIO_REGISTER_ADDRESS(GPIO_t gpio, int registerOffset) { return gpioBaseAddress[gpio] + registerOffset; } - GPIO_MODER_t * GPIO_MODER(GPIO_t gpio) { return (GPIO_MODER_t *)GPIO_REGISTER_ADDRESS(gpio, GPIO_MODER_OFFSET); } @@ -49,3 +49,6 @@ GPIO_IDR_t * GPIO_IDR(GPIO_t gpio) { return (GPIO_IDR_t *)GPIO_REGISTER_ADDRESS(gpio, GPIO_IDR_OFFSET); } +GPIO_ODR_t * GPIO_ODR(GPIO_t gpio) { + return (GPIO_ODR_t *)GPIO_REGISTER_ADDRESS(gpio, GPIO_ODR_OFFSET); +} diff --git a/arch/stm32f429/registers/gpio.h b/arch/stm32f429/registers/gpio.h index a363a7712..df34209c9 100644 --- a/arch/stm32f429/registers/gpio.h +++ b/arch/stm32f429/registers/gpio.h @@ -154,3 +154,27 @@ typedef struct { GPIO_IDR_t * GPIO_IDR(GPIO_t gpio); +#pragma mark - GPIO output data registers + +typedef struct { + unsigned int ODR0:1; + unsigned int ODR1:1; + unsigned int ODR2:1; + unsigned int ODR3:1; + unsigned int ODR4:1; + unsigned int ODR5:1; + unsigned int ODR6:1; + unsigned int ODR7:1; + unsigned int ODR8:1; + unsigned int ODR9:1; + unsigned int ODR10:1; + unsigned int ODR11:1; + unsigned int ODR12:1; + unsigned int ODR13:1; + unsigned int ODR14:1; + unsigned int ODR15:1; + unsigned int :16; +} GPIO_ODR_t; + +GPIO_ODR_t * GPIO_ODR(GPIO_t gpio); +