KETCube
ketCube_gpio.h
Go to the documentation of this file.
1 
45 /* Define to prevent recursive inclusion -------------------------------------*/
46 #ifndef __KETCUBE_GPIO_H
47 #define __KETCUBE_GPIO_H
48 
49 #include "stm32l0xx_hal_gpio.h"
50 #include "ketCube_cfg.h"
51 
58 #define KETCUBE_GPIO_NAME "gpio_drv"
59 
60 #define KETCUBE_GPIO_LED_PERIOD 500
61 
62 
65 typedef enum {
67  KETCUBE_GPIO_PIN_0 = GPIO_PIN_0,
68  KETCUBE_GPIO_PIN_1 = GPIO_PIN_1,
69  KETCUBE_GPIO_PIN_2 = GPIO_PIN_2,
70  KETCUBE_GPIO_PIN_3 = GPIO_PIN_3,
71  KETCUBE_GPIO_PIN_4 = GPIO_PIN_4,
72  KETCUBE_GPIO_PIN_5 = GPIO_PIN_5,
73  KETCUBE_GPIO_PIN_6 = GPIO_PIN_6,
74  KETCUBE_GPIO_PIN_7 = GPIO_PIN_7,
75  KETCUBE_GPIO_PIN_8 = GPIO_PIN_8,
76  KETCUBE_GPIO_PIN_9 = GPIO_PIN_9,
77  KETCUBE_GPIO_PIN_10 = GPIO_PIN_10,
78  KETCUBE_GPIO_PIN_11 = GPIO_PIN_11,
79  KETCUBE_GPIO_PIN_12 = GPIO_PIN_12,
80  KETCUBE_GPIO_PIN_13 = GPIO_PIN_13,
81  KETCUBE_GPIO_PIN_14 = GPIO_PIN_14,
82  KETCUBE_GPIO_PIN_15 = GPIO_PIN_15
84 
88 typedef enum {
89  KETCUBE_GPIO_PA = GPIOA_BASE,
90  KETCUBE_GPIO_PB = GPIOB_BASE,
91  KETCUBE_GPIO_PC = GPIOC_BASE,
92  KETCUBE_GPIO_PD = GPIOD_BASE,
93  KETCUBE_GPIO_PE = GPIOE_BASE,
94  KETCUBE_GPIO_PH = GPIOH_BASE
96 
100 typedef enum {
105 
109 typedef enum {
113 
117 typedef enum {
123 
124 
128 #ifdef __ARMCC_VERSION
129 #pragma anon_unions
130 #endif
131 typedef struct {
132  bool used:1;
135  /* settings */
136  union {
137  uint8_t value:4;
138  struct {
141  };
142  } settings;
144 
145 
149 typedef void (*ketCube_GPIO_VoidFn_t) (void* context);
150 
156 /* Init functions called by KETCube core */
157 extern void ketCube_GPIO_InitDriver(void);
159 
160 
161 /* Init functions called by modules */
163  uint16_t pin,
164  GPIO_InitTypeDef *
165  initStruct);
167  uint16_t pin,
168  ketCube_gpio_polarity_t polarity);
170  uint16_t pin,
171  GPIO_InitTypeDef * initStruct);
173  ketCube_gpio_pin_t pin);
174 
175 
176 /* Interrupt-related functions */
178  ketCube_gpio_pin_t pin,
179  uint32_t prio,
181  irqHandler);
183  ketCube_gpio_pin_t pin);
184 
185 /* Read/Write functions */
186 extern void ketCube_GPIO_Write(ketCube_gpio_port_t port,
187  ketCube_gpio_pin_t pin, bool bit);
188 extern bool ketCube_GPIO_Read(ketCube_gpio_port_t port,
189  ketCube_gpio_pin_t pin);
191  ketCube_gpio_pin_t pin,
193 
194 /* Handlers */
195 extern void EXTI0_1_IRQHandler(void);
196 extern void EXTI2_3_IRQHandler(void);
197 extern void EXTI4_15_IRQHandler(void);
198 
199 
208 #endif
ketCube_GPIO_Init
ketCube_cfg_DrvError_t ketCube_GPIO_Init(ketCube_gpio_port_t port, uint16_t pin, GPIO_InitTypeDef *initStruct)
Initializes the GPIO PIN(s)
Definition: ketCube_gpio.c:245
ketCube_gpio_descriptor_t::value
uint8_t value
Definition: ketCube_gpio.h:137
ketCube_GPIO_VoidFn_t
void(* ketCube_GPIO_VoidFn_t)(void *context)
Pointer to a IRQ Handler Function.
Definition: ketCube_gpio.h:149
KETCUBE_GPIO_PIN_15
@ KETCUBE_GPIO_PIN_15
Definition: ketCube_gpio.h:82
KETCUBE_GPIO_PIN_4
@ KETCUBE_GPIO_PIN_4
Definition: ketCube_gpio.h:71
ketCube_GPIO_Write
void ketCube_GPIO_Write(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin, bool bit)
Writes the bit value to the GPIO PIN.
Definition: ketCube_gpio.c:471
ketCube_gpio_LEDState_t
ketCube_gpio_LEDState_t
LED States.
Definition: ketCube_gpio.h:117
KETCUBE_GPIO_PIN_0
@ KETCUBE_GPIO_PIN_0
Definition: ketCube_gpio.h:67
KETCUBE_GPIO_LED_BLINK_SINGLE
@ KETCUBE_GPIO_LED_BLINK_SINGLE
Definition: ketCube_gpio.h:120
KETCUBE_GPIO_PIN_7
@ KETCUBE_GPIO_PIN_7
Definition: ketCube_gpio.h:74
KETCUBE_GPIO_PD
@ KETCUBE_GPIO_PD
Definition: ketCube_gpio.h:92
TRUE
#define TRUE
boolean TRUE
Definition: ketCube_common.h:69
ketCube_GPIO_ClearIrq
ketCube_cfg_DrvError_t ketCube_GPIO_ClearIrq(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin)
Clear IRQ for the GPIO object.
Definition: ketCube_gpio.c:442
ketCube_GPIO_SetLED
void ketCube_GPIO_SetLED(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin, ketCube_gpio_LEDState_t state)
Sets the LED state.
Definition: ketCube_gpio.c:500
KETCUBE_GPIO_FUNCTION_LED
@ KETCUBE_GPIO_FUNCTION_LED
Definition: ketCube_gpio.h:102
KETCUBE_GPIO_PIN_10
@ KETCUBE_GPIO_PIN_10
Definition: ketCube_gpio.h:77
KETCUBE_GPIO_PIN_5
@ KETCUBE_GPIO_PIN_5
Definition: ketCube_gpio.h:72
KETCUBE_GPIO_FUNCTION_BUTTON
@ KETCUBE_GPIO_FUNCTION_BUTTON
Definition: ketCube_gpio.h:103
ketCube_gpio_port_t
ketCube_gpio_port_t
GPIO Ports.
Definition: ketCube_gpio.h:88
ketCube_gpio_descriptor_t::polarity
ketCube_gpio_polarity_t polarity
Definition: ketCube_gpio.h:140
KETCUBE_GPIO_PA
@ KETCUBE_GPIO_PA
Definition: ketCube_gpio.h:89
KETCUBE_GPIO_PIN_1
@ KETCUBE_GPIO_PIN_1
Definition: ketCube_gpio.h:68
ketCube_gpio_function_t
ketCube_gpio_function_t
LED States.
Definition: ketCube_gpio.h:100
FALSE
#define FALSE
boolean FALSE
Definition: ketCube_common.h:70
ketCube_GPIO_Read
bool ketCube_GPIO_Read(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin)
Reads the current PIN value.
Definition: ketCube_gpio.c:485
ketCube_GPIO_InitLED
ketCube_cfg_DrvError_t ketCube_GPIO_InitLED(ketCube_gpio_port_t port, uint16_t pin, ketCube_gpio_polarity_t polarity)
Initializes the GPIO PIN(s) as LEDs.
Definition: ketCube_gpio.c:287
KETCUBE_GPIO_PIN_9
@ KETCUBE_GPIO_PIN_9
Definition: ketCube_gpio.h:76
KETCUBE_GPIO_NOPIN
@ KETCUBE_GPIO_NOPIN
Definition: ketCube_gpio.h:66
ketCube_gpio_descriptor_t
GPIO PIN descriptor.
Definition: ketCube_gpio.h:131
ketCube_GPIO_SetIrq
ketCube_cfg_DrvError_t ketCube_GPIO_SetIrq(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin, uint32_t prio, ketCube_GPIO_VoidFn_t irqHandler)
Records the interrupt handler for the GPIO object.
Definition: ketCube_gpio.c:400
KETCUBE_GPIO_PIN_6
@ KETCUBE_GPIO_PIN_6
Definition: ketCube_gpio.h:73
KETCUBE_GPIO_POLARITY_OFF
@ KETCUBE_GPIO_POLARITY_OFF
Definition: ketCube_gpio.h:111
KETCUBE_GPIO_PE
@ KETCUBE_GPIO_PE
Definition: ketCube_gpio.h:93
ketCube_GPIO_InitDriver
void ketCube_GPIO_InitDriver(void)
Initializes the GPIO driver.
Definition: ketCube_gpio.c:193
ketCube_gpio_descriptor_t::LED_state
ketCube_gpio_LEDState_t LED_state
Definition: ketCube_gpio.h:139
KETCUBE_GPIO_POLARITY_ON
@ KETCUBE_GPIO_POLARITY_ON
Definition: ketCube_gpio.h:110
KETCUBE_GPIO_PH
@ KETCUBE_GPIO_PH
Definition: ketCube_gpio.h:94
KETCUBE_GPIO_FUNCTION_GPIO
@ KETCUBE_GPIO_FUNCTION_GPIO
Definition: ketCube_gpio.h:101
EXTI4_15_IRQHandler
void EXTI4_15_IRQHandler(void)
Definition: ketCube_gpio.c:617
ketCube_GPIO_SleepEnter
ketCube_cfg_DrvError_t ketCube_GPIO_SleepEnter(void)
Set-UP GPIO befere sleep enter.
Definition: ketCube_gpio.c:230
ketCube_GPIO_Release
ketCube_cfg_DrvError_t ketCube_GPIO_Release(ketCube_gpio_port_t port, ketCube_gpio_pin_t pin)
Release KETCube PIN - setup as input pin.
Definition: ketCube_gpio.c:358
KETCUBE_GPIO_PIN_8
@ KETCUBE_GPIO_PIN_8
Definition: ketCube_gpio.h:75
KETCUBE_GPIO_LED_OFF
@ KETCUBE_GPIO_LED_OFF
Definition: ketCube_gpio.h:118
KETCUBE_GPIO_PC
@ KETCUBE_GPIO_PC
Definition: ketCube_gpio.h:91
KETCUBE_GPIO_PB
@ KETCUBE_GPIO_PB
Definition: ketCube_gpio.h:90
ketCube_gpio_polarity_t
ketCube_gpio_polarity_t
GPIO polarity.
Definition: ketCube_gpio.h:109
ketCube_gpio_descriptor_t::used
bool used
Definition: ketCube_gpio.h:132
ketCube_GPIO_ReInit
ketCube_cfg_DrvError_t ketCube_GPIO_ReInit(ketCube_gpio_port_t port, uint16_t pin, GPIO_InitTypeDef *initStruct)
Initializes the GPIO PIN(s) without usage checking.
Definition: ketCube_gpio.c:319
KETCUBE_GPIO_PIN_12
@ KETCUBE_GPIO_PIN_12
Definition: ketCube_gpio.h:79
KETCUBE_GPIO_PIN_3
@ KETCUBE_GPIO_PIN_3
Definition: ketCube_gpio.h:70
ketCube_gpio_pin_t
ketCube_gpio_pin_t
List of GPIO PINs.
Definition: ketCube_gpio.h:65
KETCUBE_GPIO_PIN_2
@ KETCUBE_GPIO_PIN_2
Definition: ketCube_gpio.h:69
KETCUBE_GPIO_PIN_11
@ KETCUBE_GPIO_PIN_11
Definition: ketCube_gpio.h:78
EXTI2_3_IRQHandler
void EXTI2_3_IRQHandler(void)
Definition: ketCube_gpio.c:607
KETCUBE_GPIO_LED_BLINK_CONT
@ KETCUBE_GPIO_LED_BLINK_CONT
Definition: ketCube_gpio.h:121
ketCube_cfg.h
This file contains definitions for the KETCube configuration.
KETCUBE_GPIO_PIN_14
@ KETCUBE_GPIO_PIN_14
Definition: ketCube_gpio.h:81
KETCUBE_GPIO_LED_ON
@ KETCUBE_GPIO_LED_ON
Definition: ketCube_gpio.h:119
KETCUBE_GPIO_PIN_13
@ KETCUBE_GPIO_PIN_13
Definition: ketCube_gpio.h:80
ketCube_cfg_DrvError_t
ketCube_cfg_DrvError_t
Error code type.
Definition: ketCube_cfg.h:108
EXTI0_1_IRQHandler
void EXTI0_1_IRQHandler(void)
Definition: ketCube_gpio.c:598