/* * gpio.h * * Created on: 24 Oct 2023 * Author: rokcesnovar */ #ifndef GPIO_H_ #define GPIO_H_ #include typedef struct { volatile uint32_t GPIO_INPUT_VAL; /* GPIO input value data register Address offset 0x00 */ volatile uint32_t GPIO_INPUT_EN; /* GPIO input enable register Address offset 0x04 */ volatile uint32_t GPIO_OUTPUT_EN; /* GPIO output enable register Address offset 0x08 */ volatile uint32_t GPIO_OUTPUT_VAL; /* GPIO output value data register Address offset 0x0C */ } GPIO_TypeDef; typedef struct { uint32_t Pin; uint32_t Mode; } GPIO_InitTypeDef; #define GPIO_BASE ((GPIO_TypeDef*)0x10012000) #define GPIO_MODE_OUTPUT 0 #define GPIO_MODE_INPUT 1 typedef enum { GPIO_PIN_RESET = 0U, GPIO_PIN_SET } GPIO_PinState; #define GPIO_PIN_0 ((uint32_t)0x00000001) #define GPIO_PIN_1 ((uint32_t)0x00000002) #define GPIO_PIN_2 ((uint32_t)0x00000004) #define GPIO_PIN_3 ((uint32_t)0x00000008) #define GPIO_PIN_4 ((uint32_t)0x00000010) #define GPIO_PIN_5 ((uint32_t)0x00000020) #define GPIO_PIN_6 ((uint32_t)0x00000040) #define GPIO_PIN_7 ((uint32_t)0x00000080) #define GPIO_PIN_8 ((uint32_t)0x00000100) #define GPIO_PIN_9 ((uint32_t)0x00000200) #define GPIO_PIN_10 ((uint32_t)0x00000400) #define GPIO_PIN_11 ((uint32_t)0x00000800) #define GPIO_PIN_12 ((uint32_t)0x00001000) #define GPIO_PIN_13 ((uint32_t)0x00002000) #define GPIO_PIN_14 ((uint32_t)0x00004000) #define GPIO_PIN_15 ((uint32_t)0x00008000) #define GPIO_PIN_16 ((uint32_t)0x00010000) #define GPIO_PIN_17 ((uint32_t)0x00020000) #define GPIO_PIN_18 ((uint32_t)0x00040000) #define GPIO_PIN_19 ((uint32_t)0x00080000) #define GPIO_PIN_20 ((uint32_t)0x00100000) #define GPIO_PIN_21 ((uint32_t)0x00200000) #define GPIO_PIN_22 ((uint32_t)0x00400000) #define GPIO_PIN_23 ((uint32_t)0x00800000) #define GPIO_PIN_24 ((uint32_t)0x01000000) #define GPIO_PIN_25 ((uint32_t)0x02000000) #define GPIO_PIN_26 ((uint32_t)0x04000000) #define GPIO_PIN_27 ((uint32_t)0x08000000) #define GPIO_PIN_28 ((uint32_t)0x10000000) #define GPIO_PIN_29 ((uint32_t)0x20000000) #define GPIO_PIN_30 ((uint32_t)0x40000000) #define GPIO_PIN_31 ((uint32_t)0x80000000) void HAL_GPIO_Init(GPIO_TypeDef* GPIO, GPIO_InitTypeDef* init); void HAL_GPIO_WritePin(GPIO_TypeDef *GPIO, uint32_t GPIO_Pin, GPIO_PinState PinState); GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIO, uint32_t GPIO_Pin); #endif /* GPIO_H_ */