TM STM32F4xx Libraries  v1.0.0
Libraries for STM32F4xx devices from Tilen Majerle
tm_stm32f4_gpio.h
1 
30 #ifndef TM_GPIO_H
31 #define TM_GPIO_H 150
32 
33 /* C++ detection */
34 #ifdef __cplusplus
35 extern C {
36 #endif
37 
93 #include "stm32f4xx.h"
94 #include "stm32f4xx_gpio.h"
95 #include "defines.h"
96 
108 #ifndef GPIO_PIN_0
109 #define GPIO_PIN_0 ((uint16_t)0x0001)
110 #define GPIO_PIN_1 ((uint16_t)0x0002)
111 #define GPIO_PIN_2 ((uint16_t)0x0004)
112 #define GPIO_PIN_3 ((uint16_t)0x0008)
113 #define GPIO_PIN_4 ((uint16_t)0x0010)
114 #define GPIO_PIN_5 ((uint16_t)0x0020)
115 #define GPIO_PIN_6 ((uint16_t)0x0040)
116 #define GPIO_PIN_7 ((uint16_t)0x0080)
117 #define GPIO_PIN_8 ((uint16_t)0x0100)
118 #define GPIO_PIN_9 ((uint16_t)0x0200)
119 #define GPIO_PIN_10 ((uint16_t)0x0400)
120 #define GPIO_PIN_11 ((uint16_t)0x0800)
121 #define GPIO_PIN_12 ((uint16_t)0x1000)
122 #define GPIO_PIN_13 ((uint16_t)0x2000)
123 #define GPIO_PIN_14 ((uint16_t)0x4000)
124 #define GPIO_PIN_15 ((uint16_t)0x8000)
125 #define GPIO_PIN_ALL ((uint16_t)0xFFFF)
126 #endif
127 
133 #ifndef GPIO_Pin_0
134 #define GPIO_Pin_0 ((uint16_t)0x0001)
135 #define GPIO_Pin_1 ((uint16_t)0x0002)
136 #define GPIO_Pin_2 ((uint16_t)0x0004)
137 #define GPIO_Pin_3 ((uint16_t)0x0008)
138 #define GPIO_Pin_4 ((uint16_t)0x0010)
139 #define GPIO_Pin_5 ((uint16_t)0x0020)
140 #define GPIO_Pin_6 ((uint16_t)0x0040)
141 #define GPIO_Pin_7 ((uint16_t)0x0080)
142 #define GPIO_Pin_8 ((uint16_t)0x0100)
143 #define GPIO_Pin_9 ((uint16_t)0x0200)
144 #define GPIO_Pin_10 ((uint16_t)0x0400)
145 #define GPIO_Pin_11 ((uint16_t)0x0800)
146 #define GPIO_Pin_12 ((uint16_t)0x1000)
147 #define GPIO_Pin_13 ((uint16_t)0x2000)
148 #define GPIO_Pin_14 ((uint16_t)0x4000)
149 #define GPIO_Pin_15 ((uint16_t)0x8000)
150 #define GPIO_Pin_All ((uint16_t)0xFFFF)
151 #endif
152 
166 typedef enum {
172 
176 typedef enum {
180 
184 typedef enum {
190 
194 typedef enum {
199 
221 void TM_GPIO_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, TM_GPIO_Mode_t GPIO_Mode, TM_GPIO_OType_t GPIO_OType, TM_GPIO_PuPd_t GPIO_PuPd, TM_GPIO_Speed_t GPIO_Speed);
222 
234 void TM_GPIO_InitAlternate(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, TM_GPIO_OType_t GPIO_OType, TM_GPIO_PuPd_t GPIO_PuPd, TM_GPIO_Speed_t GPIO_Speed, uint8_t Alternate);
235 
243 void TM_GPIO_DeInit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
244 
253 void TM_GPIO_SetPinAsInput(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
254 
263 void TM_GPIO_SetPinAsOutput(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
264 
273 void TM_GPIO_SetPinAsAnalog(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
274 
283 void TM_GPIO_SetPinAsAlternate(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
284 
293 void TM_GPIO_SetPullResistor(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, TM_GPIO_PuPd_t GPIO_PuPd);
294 
302 #define TM_GPIO_SetPinLow(GPIOx, GPIO_Pin) ((GPIOx)->BSRRH = (GPIO_Pin))
303 
311 #define TM_GPIO_SetPinHigh(GPIOx, GPIO_Pin) ((GPIOx)->BSRRL = (GPIO_Pin))
312 
321 #define TM_GPIO_SetPinValue(GPIOx, GPIO_Pin, val) ((val) ? TM_GPIO_SetPinHigh(GPIOx, GPIO_Pin) : TM_GPIO_SetPinLow(GPIOx, GPIO_Pin))
322 
330 #define TM_GPIO_TogglePinValue(GPIOx, GPIO_Pin) ((GPIOx)->ODR ^= (GPIO_Pin))
331 
339 #define TM_GPIO_SetPortValue(GPIOx, value) ((GPIOx)->ODR = (value))
340 
348 #define TM_GPIO_GetInputPinValue(GPIOx, GPIO_Pin) (((GPIOx)->IDR & (GPIO_Pin)) == 0 ? 0 : 1)
349 
357 #define TM_GPIO_GetOutputPinValue(GPIOx, GPIO_Pin) (((GPIOx)->ODR & (GPIO_Pin)) == 0 ? 0 : 1)
358 
365 #define TM_GPIO_GetPortInputValue(GPIOx) ((GPIOx)->IDR)
366 
373 #define TM_GPIO_GetPortOutputValue(GPIOx) ((GPIOx)->ODR)
374 
381 uint16_t TM_GPIO_GetPortSource(GPIO_TypeDef* GPIOx);
382 
389 uint16_t TM_GPIO_GetPinSource(uint16_t GPIO_Pin);
390 
398 void TM_GPIO_Lock(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
399 
405 uint16_t TM_GPIO_GetUsedPins(GPIO_TypeDef* GPIOx);
406 
412 uint16_t TM_GPIO_GetFreePins(GPIO_TypeDef* GPIOx);
413 
424 /* C++ detection */
425 #ifdef __cplusplus
426 }
427 #endif
428 
429 #endif
TM_GPIO_Mode_t
GPIO Mode enumeration.
Definition: tm_stm32f4_gpio.h:166
uint16_t TM_GPIO_GetFreePins(GPIO_TypeDef *GPIOx)
Gets bit separated pins which were not used at in library or were deinitialized.
Definition: tm_stm32f4_gpio.h:169
void TM_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Deinitializes pin(s)
TM_GPIO_OType_t
GPIO Output type enumeration.
Definition: tm_stm32f4_gpio.h:176
Definition: tm_stm32f4_gpio.h:185
Definition: tm_stm32f4_gpio.h:168
void TM_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, TM_GPIO_Mode_t GPIO_Mode, TM_GPIO_OType_t GPIO_OType, TM_GPIO_PuPd_t GPIO_PuPd, TM_GPIO_Speed_t GPIO_Speed)
Initializes GPIO pins(s)
void TM_GPIO_SetPinAsAnalog(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Sets pin(s) as analog.
Definition: tm_stm32f4_gpio.h:187
Definition: tm_stm32f4_gpio.h:178
Definition: tm_stm32f4_gpio.h:167
void TM_GPIO_InitAlternate(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, TM_GPIO_OType_t GPIO_OType, TM_GPIO_PuPd_t GPIO_PuPd, TM_GPIO_Speed_t GPIO_Speed, uint8_t Alternate)
Initializes GPIO pins(s) as alternate function.
TM_GPIO_PuPd_t
GPIO pull resistors enumeration.
Definition: tm_stm32f4_gpio.h:194
Definition: tm_stm32f4_gpio.h:196
uint16_t TM_GPIO_GetUsedPins(GPIO_TypeDef *GPIOx)
Gets bit separated pins which were used at least once in library and were not deinitialized.
Definition: tm_stm32f4_gpio.h:170
void TM_GPIO_Lock(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Locks GPIOx register for future changes.
Definition: tm_stm32f4_gpio.h:177
Definition: tm_stm32f4_gpio.h:197
Definition: tm_stm32f4_gpio.h:186
void TM_GPIO_SetPullResistor(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, TM_GPIO_PuPd_t GPIO_PuPd)
Sets pull resistor settings to GPIO pin(s)
uint16_t TM_GPIO_GetPortSource(GPIO_TypeDef *GPIOx)
Gets port source from desired GPIOx PORT.
void TM_GPIO_SetPinAsOutput(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Sets pin(s) as output.
uint16_t TM_GPIO_GetPinSource(uint16_t GPIO_Pin)
Gets pin source from desired GPIO pin.
void TM_GPIO_SetPinAsInput(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Sets pin(s) as input.
TM_GPIO_Speed_t
GPIO Speed enumeration.
Definition: tm_stm32f4_gpio.h:184
void TM_GPIO_SetPinAsAlternate(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Sets pin(s) as alternate function.
Definition: tm_stm32f4_gpio.h:188
Definition: tm_stm32f4_gpio.h:195