Loading...
Searching...
No Matches
gpiopin.h
1
8
9// ALLOW FORMATTING
10#ifndef GPIOPIN_H
11#define GPIOPIN_H
12
13#include "stm32f439xx.h"
14
15#define GPIO_PERIPHERAL_SIZE 0x3FF // Size of each GPIO in memory
16
17// Macro definitions for pin config literals
18//
19// clang-format off
20#define GPIO_CONFIG_DEFAULT \
21 (GPIO_Config) { \
22 GPIO_MODE_OUTPUT, \
23 GPIO_TYPE_PUSHPULL, \
24 GPIO_SPEED_HIGH, \
25 GPIO_PUPD_NONE, \
26 GPIO_AF0 \
27 }
28#define GPIO_CONFIG_INPUT \
29 (GPIO_Config) { \
30 GPIO_MODE_INPUT, \
31 GPIO_TYPE_PUSHPULL, \
32 GPIO_SPEED_HIGH, \
33 GPIO_PUPD_PULLUP, \
34 GPIO_AF0 \
35 }
36// clang-format on
37
44
67
90
101
110
121
131
145
151typedef struct GPIOpin {
155 void (*set)(struct GPIOpin *);
156 void (*reset)(struct GPIOpin *);
157 void (*toggle)(struct GPIOpin *);
158 void (*updateConfig)(struct GPIOpin *, GPIO_Config *);
159} GPIOpin_t;
160
162void GPIOpin_set(GPIOpin_t *);
166
168#endif
GPIO_Speed speed
Pin output speed | (default GPIO_SPEED_HIGH)
Definition gpiopin.h:141
GPIO_PUPD pupd
Pin pull-up/pull-down | (default GPIO_PUPD_NONE)
Definition gpiopin.h:142
void(* updateConfig)(struct GPIOpin *, GPIO_Config *)
Definition gpiopin.h:158
GPIO_Mode mode
Pin I/O direction | (default GPIO_MODE_OUTPUT)
Definition gpiopin.h:139
GPIO_AF afr
Pin alternate function | (default GPIO_AF0)
Definition gpiopin.h:143
GPIO_TypeDef * port
GPIO port in which the pin is located.
Definition gpiopin.h:152
GPIO_Config config
Configuration parameters for the pin.
Definition gpiopin.h:154
void(* toggle)(struct GPIOpin *)
Definition gpiopin.h:157
GPIO_Type type
Pin output type | (default GPIO_TYPE_PUSHPULL)
Definition gpiopin.h:140
GPIO_Pin pin
Actual location of the pin within GPIO port.
Definition gpiopin.h:153
void(* set)(struct GPIOpin *)
Definition gpiopin.h:155
void(* reset)(struct GPIOpin *)
Definition gpiopin.h:156
GPIO_AF
GPIO alternate function enum.
Definition gpiopin.h:72
void GPIOpin_toggle(GPIOpin_t *)
Toggle the selected GPIO pin.
Definition gpiopin.c:126
void GPIOpin_updateConfig(GPIOpin_t *, GPIO_Config *)
Update GPIO pin configuration.
Definition gpiopin.c:142
GPIO_Pin
GPIO pin enum.
Definition gpiopin.h:49
GPIO_PUPD
GPIO pull-up/pull-down enum.
Definition gpiopin.h:126
GPIOpin_t GPIOpin_init(GPIO_TypeDef *, GPIO_Pin, GPIO_Config *)
Initialiser for a GPIO peripheral pin interface.
Definition gpiopin.c:28
GPIO_Speed
GPIO speed enum.
Definition gpiopin.h:115
GPIO_Type
GPIO type enum.
Definition gpiopin.h:106
GPIO_Mode
GPIO mode enum.
Definition gpiopin.h:95
void GPIOpin_set(GPIOpin_t *)
Set the selected GPIO pin.
Definition gpiopin.c:98
void GPIOpin_reset(GPIOpin_t *)
Clear the selected GPIO pin.
Definition gpiopin.c:112
@ GPIO_AF1
TIM1/TIM2.
Definition gpiopin.h:74
@ GPIO_AF2
TIM3..5.
Definition gpiopin.h:75
@ GPIO_AF5
SPI1/2/3/4/5/6.
Definition gpiopin.h:78
@ GPIO_AF15
EVENTOUT.
Definition gpiopin.h:88
@ GPIO_AF4
I2C1..3.
Definition gpiopin.h:77
@ GPIO_AF8
USART4..8.
Definition gpiopin.h:81
@ GPIO_AF6
SPI2/3/SAI1.
Definition gpiopin.h:79
@ GPIO_AF10
OTG_FS, OTG_HS.
Definition gpiopin.h:83
@ GPIO_AF9
CAN1/CAN2, LTDC, TIM12..14.
Definition gpiopin.h:82
@ GPIO_AF14
LTDC.
Definition gpiopin.h:87
@ GPIO_AF3
TIM8..11.
Definition gpiopin.h:76
@ GPIO_AF0
System.
Definition gpiopin.h:73
@ GPIO_AF12
FMC, SDIO, OTG_HS.
Definition gpiopin.h:85
@ GPIO_AF7
USART1..3.
Definition gpiopin.h:80
@ GPIO_AF13
DCMI.
Definition gpiopin.h:86
@ GPIO_AF11
ETH.
Definition gpiopin.h:84
@ GPIO_PIN4
Pin 4.
Definition gpiopin.h:54
@ GPIO_PIN7
Pin 7.
Definition gpiopin.h:57
@ GPIO_PIN14
Pin 14.
Definition gpiopin.h:64
@ GPIO_PIN8
Pin 8.
Definition gpiopin.h:58
@ GPIO_PIN15
Pin 15.
Definition gpiopin.h:65
@ GPIO_PIN2
Pin 2.
Definition gpiopin.h:52
@ GPIO_PIN6
Pin 6.
Definition gpiopin.h:56
@ GPIO_PIN9
Pin 9.
Definition gpiopin.h:59
@ GPIO_PIN10
Pin 10.
Definition gpiopin.h:60
@ GPIO_PIN1
Pin 1.
Definition gpiopin.h:51
@ GPIO_PIN5
Pin 5.
Definition gpiopin.h:55
@ GPIO_PIN13
Pin 13.
Definition gpiopin.h:63
@ GPIO_PIN0
Pin 0.
Definition gpiopin.h:50
@ GPIO_PIN11
Pin 11.
Definition gpiopin.h:61
@ GPIO_PIN12
Pin 12.
Definition gpiopin.h:62
@ GPIO_PIN3
Pin 3.
Definition gpiopin.h:53
@ GPIO_PUPD_PULLUP
Pull-up | (default for PA15, PA13, PB4)
Definition gpiopin.h:128
@ GPIO_PUPD_PULLDOWN
Pull-down | (default for PB14)
Definition gpiopin.h:129
@ GPIO_PUPD_NONE
No pull-up, pull-down | (default for all not specified)
Definition gpiopin.h:127
@ GPIO_SPEED_LOW
Low speed output | (default for all not specified)
Definition gpiopin.h:116
@ GPIO_SPEED_MEDIUM
Medium speed output |.
Definition gpiopin.h:117
@ GPIO_SPEED_VERYHIGH
Very high speed output | (default for PA13, PB3)
Definition gpiopin.h:119
@ GPIO_SPEED_HIGH
High speed output |.
Definition gpiopin.h:118
@ GPIO_TYPE_PUSHPULL
Push pull (reset state)
Definition gpiopin.h:107
@ GPIO_TYPE_OPENDRAIN
Open drain.
Definition gpiopin.h:108
@ GPIO_MODE_AF
Alternate function mode.
Definition gpiopin.h:98
@ GPIO_MODE_ANALOG
Analog mode.
Definition gpiopin.h:99
@ GPIO_MODE_INPUT
Input mode (reset state)
Definition gpiopin.h:96
@ GPIO_MODE_OUTPUT
General purpose output mode.
Definition gpiopin.h:97
Struct definition for GPIO configuration.
Definition gpiopin.h:138
Struct definition for a GPIO pin.
Definition gpiopin.h:151
General Purpose I/O.
CMSIS STM32F439xx Device Peripheral Access Layer Header File.