ARMEBS4  revision-26.06.2015
stm32_gpio.h
Go to the documentation of this file.
1 /************************************************************************//**
2  * \file heivs/stm32_gpio.h
3  * \brief board specific defines
4  * \author marc dot pignat at hevs dot ch
5  * \defgroup gpio GPIO (General Purpose I/O)
6  * \ingroup libheivs_stm32
7  * @{
8  ***************************************************************************/
9 
10 #ifndef HEIVS_STM32_GPIO_H
11 #define HEIVS_STM32_GPIO_H
12 
13 #ifdef __cplusplus
14  extern "C" {
15 #endif
16 
17 #include <stdint.h>
18 #include <string.h>
19 #include "heivs/error.h"
20 #include "stm32/stm32f4xx_gpio.h"
21 
22 #define HEIVS_GPIO_PARANOIA 0 /*< 1 for full check, 0 for less checks */
23 
24 #define _GPIO_TYPE_SHIFT 15
25 #define _GPIO_OUT_SHIFT 17
26 #define _GPIO_DRIVE_SHIFT 18
27 #define _GPIO_SPEED_SHIFT 19
28 #define _GPIO_PULL_SHIFT 21
29 #define _GPIO_AF_NR_SHIFT 0
30 
31 #define _GPIO_TYPE_MASK 0x3
32 #define _GPIO_OUT_MASK 0x3
33 #define _GPIO_DRIVE_MASK 0x1
34 #define _GPIO_SPEED_MASK 0x3
35 #define _GPIO_PULL_MASK 0x3
36 #define _GPIO_AF_NR_MASK 0xf
37 
38 /**
39  * \brief GPIO modes, can be ORed
40  */
42 {
43  //! Input
44  GPIO_INPUT = (0x0 << _GPIO_TYPE_SHIFT),
45 
46  //! Output (same as ::GPIO_OUTPUT_0)
47  GPIO_OUTPUT = (0x1 << _GPIO_TYPE_SHIFT),
48 
49  //! Output (default 0)
50  GPIO_OUTPUT_0 = (0x1 << _GPIO_TYPE_SHIFT),
51 
52  //! Output (default 1)
53  GPIO_OUTPUT_1 = (0x1 << _GPIO_TYPE_SHIFT) | (0x1 << _GPIO_OUT_SHIFT),
54 
55  //! Alternate function
56  GPIO_AF = (0x2 << _GPIO_TYPE_SHIFT),
57 
58  //! Analog
59  GPIO_AN = (0x3 << _GPIO_TYPE_SHIFT),
60 
61  //! Output type : Push-Pull
62  GPIO_PP = (0x0 << _GPIO_DRIVE_SHIFT),
63 
64  //! Output type : Open Drain
65  GPIO_OD = (0x1 << _GPIO_DRIVE_SHIFT),
66 
67  //! Output speed : 2 MHz
68  GPIO_SPEED_2 = (0x0 << _GPIO_SPEED_SHIFT),
69 
70  //! Output speed : 25 MHz
71  GPIO_SPEED_25 = (0x1 << _GPIO_SPEED_SHIFT),
72 
73  //! Output speed : 50 MHz
74  GPIO_SPEED_50 = (0x2 << _GPIO_SPEED_SHIFT),
75 
76  //! Output speed : 100 MHz
77  GPIO_SPEED_100 = (0x3 << _GPIO_SPEED_SHIFT),
78 
79  //! No pull up or down
80  GPIO_NOPULL = (0x0 << _GPIO_PULL_SHIFT),
81 
82  //! Pull up
83  GPIO_PULLUP = (0x1 << _GPIO_PULL_SHIFT),
84 
85  //! pull down
86  GPIO_PULLDOWN = (0x2 << _GPIO_PULL_SHIFT),
87 
88  _GPIO_AF_NR = (0xf << _GPIO_AF_NR_SHIFT)
89 };
90 
91 /**
92  * \brief GPIO control structure
93  *
94  * \see gpio_setup and gpio_setup_list
95  */
96 struct gpio_t
97 {
98  uint8_t ctrl; ///< Controller number (0 for GPIOA, 1 for GPIOB, ...)
99  uint8_t nr; ///< Pin number (0 for GPIOx0, ... , 3 for GPIOx3, ...)
100  uint16_t mask; ///< Pin mask (0x1 for GPIOx0, ... , 0x4 for GPIOx3, ...)
101  enum gpio_mode_e mode; ///< mode for instance ::GPIO_INPUT | ::GPIO_PULLDOWN
102 };
103 
104 #define _GPIO_DEF(__CTRL__, __PIN__, __MODE__) {.ctrl = __CTRL__, .nr = __PIN__, .mask = (1<<__PIN__), .mode = (enum gpio_mode_e)(__MODE__)}
105 #define GPIO_NC_CTRL 9
106 
107 /**
108  * \brief Unconnected pin
109  */
110 #define GPIO_NC _GPIO_DEF(GPIO_NC_CTRL, 0, 0)
111 
112 /**
113  * \brief Setup a gpio
114  * \param gpio Pointer on the gpio
115  *
116  * \return #NO_ERROR for no problem
117  *
118  * Example configuring GPIOA3 as input with pullup:
119  * \code
120  * #include "heivs/stm32_gpio.h"
121  *
122  * void do_something(void)
123  * {
124  * const gpio_t test_pin = DEF_GPIOA(3, GPIO_INPUT | GPIO_PULLUP);
125  * gpio_setup(&test_pin);
126  * }
127  *
128  * \endcode
129  */
130 status_e gpio_setup(const struct gpio_t *gpio);
131 
132 /**
133  * \brief Setup an array of gpio
134  * \param gpio Pointer on the first gpio
135  * \param len The number of gpios
136  *
137  * \return #NO_ERROR for no problem
138  *
139  * \code
140  * #include "heivs/stm32_gpio.h"
141  *
142  * void do_something(void)
143  * {
144  * const gpio_t test_pins[] =
145  * {
146  * DEF_GPIOA(7, GPIO_INPUT | GPIO_PULLUP),
147  * DEF_GPIOH(3, GPIO_OUTPUT_0 | GPIO_OD | GPIO_SPEED_2),
148  * DEF_GPIOD(1, GPIO_INPUT | GPIO_PULLUP)
149  * };
150  *
151  * gpio_setup_list(test_pins, ARRAY_SIZE(test_pins));
152  * }
153  * \endcode
154  *
155  */
156 status_e gpio_setup_list(const struct gpio_t gpio[], size_t len);
157 
158 static const uint32_t _internal_gpio_ctrls[] =
159 {
160  GPIOA_BASE,
161  GPIOB_BASE,
162  GPIOC_BASE,
163  GPIOD_BASE,
164  GPIOE_BASE,
165  GPIOF_BASE,
166  GPIOG_BASE,
167  GPIOH_BASE,
168  GPIOI_BASE,
169 };
170 
171 /**
172  * \brief Get the gpio controller given the gpio struct
173  * \internal
174  */
175 static inline GPIO_TypeDef *_internal_gpio_get_ctrl(const struct gpio_t *gpio)
176 {
177  return (GPIO_TypeDef *)_internal_gpio_ctrls[gpio->ctrl];
178 }
179 
180 /**
181  * \brief Toggle a gpio line
182  *
183  * \param gpio which gpio
184  */
185 static inline void gpio_toggle(const struct gpio_t *gpio)
186 {
187  /* Handle the GPIO_NC case */
188  if (gpio->ctrl == GPIO_NC_CTRL)
189  {
190  return ;
191  }
192 
193  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
194 
195  /* Current output (register, not pins!) */
196  uint32_t current = GPIOx->ODR & gpio->mask;
197 
198  /* Bits to set */
199  uint32_t set = gpio->mask ^ current;
200 
201  /* Bits to clear */
202  uint32_t clear = current;
203 
204  /* One 32 bit access -> smaller/faster */
205  volatile uint32_t *reg = (volatile uint32_t *)&GPIOx->BSRRL;
206 
207  *reg = (clear) << 16 | set;
208 }
209 
210 /**
211  * \brief Get gpio level
212  * \param gpio which gpio
213  *
214  * \return 0 for logical level 0, gpio->mask for logical level 1
215  *
216  * The value returned is the value of the pin, outside of the chip
217  * \see gpio_get_internal
218  */
219 static inline uint32_t gpio_get(const struct gpio_t *gpio)
220 {
221  /* Handle the GPIO_NC case */
222  if (gpio->ctrl == GPIO_NC_CTRL)
223  {
224  return 0;
225  }
226 
227  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
228  return GPIOx->IDR & gpio->mask;
229 }
230 
231 /**
232  * \brief Get gpio internal level
233  * \param gpio which gpio
234  *
235  * \return 0 for logical level 0, gpio->mask for logical level 1
236  *
237  * The value returned is the value of the output register, not the value
238  * of the pin.
239  *
240  * \see gpio_get
241  */
242 static inline uint32_t gpio_get_internal(const struct gpio_t *gpio)
243 {
244  /* Handle the GPIO_NC case */
245  if (gpio->ctrl == GPIO_NC_CTRL)
246  {
247  return 0;
248  }
249 
250  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
251  return GPIOx->ODR & gpio->mask;
252 }
253 
254 /**
255  * \brief Set a gpio
256  *
257  * \param gpio the gpio to set
258  * \param value 0 for output logical 0, anything else for logical level 1
259  */
260 static inline void gpio_set(const struct gpio_t *gpio, uint32_t value)
261 {
262  /* Handle the GPIO_NC case */
263  if (gpio->ctrl == GPIO_NC_CTRL)
264  {
265  return;
266  }
267 
268  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
269 
270  if (value)
271  {
272  GPIOx->BSRRL = gpio->mask;
273  }
274  else
275  {
276  GPIOx->BSRRH = gpio->mask;
277  }
278 }
279 
280 /**
281  * \brief Set a gpio direction
282  *
283  * \param gpio the gpio to set
284  * \param dir GPIO_INPUT, GPIO_OUTPUT_0 or GPIO_OUTPUT_1
285  */
286 static inline void gpio_set_direction(const struct gpio_t *gpio, enum gpio_mode_e dir)
287 {
288  /* Handle the GPIO_NC case */
289  if (gpio->ctrl == GPIO_NC_CTRL)
290  {
291  return;
292  }
293 
294  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
295  uint32_t out_value = (dir >> _GPIO_OUT_SHIFT) & _GPIO_OUT_MASK;
296  uint32_t type = (dir >> _GPIO_TYPE_SHIFT) & _GPIO_TYPE_MASK;
297 
298  gpio_set(gpio, out_value);
299 
300  GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (gpio->nr * 2));
301  GPIOx->MODER |= type << (gpio->nr * 2);
302 }
303 
304 static inline void gpio_set_multiple(const struct gpio_t *gpio, uint16_t mask, uint16_t value)
305 {
306  /* Handle the GPIO_NC case */
307  if (gpio->ctrl == GPIO_NC_CTRL)
308  {
309  return;
310  }
311 
312  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
313  uint16_t set = mask & value;
314  uint16_t clear = mask & ~value;
315  volatile uint32_t *reg = (volatile uint32_t *)&GPIOx->BSRRL;
316 
317  *reg = (clear << 16) | set;
318 }
319 
320 static inline uint32_t gpio_get_multiple(const struct gpio_t *gpio)
321 {
322  /* Handle the GPIO_NC case */
323  if (gpio->ctrl == GPIO_NC_CTRL)
324  {
325  return 0;
326  }
327 
328  GPIO_TypeDef *GPIOx = _internal_gpio_get_ctrl(gpio);
329  return GPIOx->IDR;
330 }
331 
332 /**
333  * \brief Helper for defining a pin
334  * \param __PIN the pin number (0 for GPIOx0, ..., 3 for GPIOx3, ...)
335  * \param __MODE #gpio_mode_e of the pin
336  *
337  * Example for one pin:
338  * \code
339  * #include "heivs/stm32_gpio.h"
340  *
341  * const gpio_t test_pin = DEF_GPIOA(3, GPIO_INPUT | GPIO_PULLUP);
342  *
343  * \endcode
344  *
345  * Example for multiple pins:
346  * \code
347  * #include "heivs/stm32_gpio.h"
348  *
349  * const gpio_t test_pins[] =
350  * {
351  * DEF_GPIOA(7, GPIO_INPUT | GPIO_PULLUP),
352  * DEF_GPIOH(3, GPIO_OUTPUT_0 | GPIO_OD | GPIO_SPEED_2),
353  * DEF_GPIOD(1, GPIO_INPUT | GPIO_PULLUP)
354  * };
355  *
356  * \endcode
357  */
358 #define DEF_GPIOA(__PIN, __MODE) _GPIO_DEF(0, __PIN, __MODE)
359 
360 #define DEF_GPIOB(__PIN, __MODE) _GPIO_DEF(1, __PIN, __MODE) ///< same as #DEF_GPIOA for port B
361 #define DEF_GPIOC(__PIN, __MODE) _GPIO_DEF(2, __PIN, __MODE) ///< same as #DEF_GPIOA for port C
362 #define DEF_GPIOD(__PIN, __MODE) _GPIO_DEF(3, __PIN, __MODE) ///< same as #DEF_GPIOA for port D
363 #define DEF_GPIOE(__PIN, __MODE) _GPIO_DEF(4, __PIN, __MODE) ///< same as #DEF_GPIOA for port E
364 #define DEF_GPIOF(__PIN, __MODE) _GPIO_DEF(5, __PIN, __MODE) ///< same as #DEF_GPIOA for port F
365 #define DEF_GPIOG(__PIN, __MODE) _GPIO_DEF(6, __PIN, __MODE) ///< same as #DEF_GPIOA for port G
366 #define DEF_GPIOH(__PIN, __MODE) _GPIO_DEF(7, __PIN, __MODE) ///< same as #DEF_GPIOA for port H
367 #define DEF_GPIOI(__PIN, __MODE) _GPIO_DEF(8, __PIN, __MODE) ///< same as #DEF_GPIOA for port I
368 
369 /*
370  * Support for older way
371  */
372 #define GPIO_MOD _GPIO_DEF
373 
374 #define GPIO_TIM2_CH1_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
375 #define GPIO_TIM5_CH1_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
376 #define GPIO_TIM8_ETR_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
377 #define GPIO_USART2_CTS_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
378 #define GPIO_USART4_TX_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART4)
379 #define GPIO_ETH_MII_CRS_PA0 DEF_GPIOA( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
380 
381 #define GPIO_TIM2_CH2_PA1 DEF_GPIOA( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
382 #define GPIO_TIM5_CH2_PA1 DEF_GPIOA( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
383 #define GPIO_USART2_RTS_PA1 DEF_GPIOA( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
384 #define GPIO_USART4_RX_PA1 DEF_GPIOA( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART4)
385 #define GPIO_ETH_MII_RX_CLK_PA1 DEF_GPIOA( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
386 
387 #define GPIO_TIM2_CH3_PA2 DEF_GPIOA( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
388 #define GPIO_TIM5_CH3_PA2 DEF_GPIOA( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
389 #define GPIO_TIM9_CH1_PA2 DEF_GPIOA( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM9)
390 #define GPIO_USART2_TX_PA2 DEF_GPIOA( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLUP | GPIO_AF_USART2)
391 #define GPIO_ETH_MDIO_PA2 DEF_GPIOA( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
392 
393 #define GPIO_TIM2_CH4_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
394 #define GPIO_TIM5_CH4_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
395 #define GPIO_TIM9_CH2_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM9)
396 #define GPIO_USART2_RX_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLUP | GPIO_AF_USART2)
397 #define GPIO_OTG_HS_ULPI_D0_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
398 #define GPIO_ETH_MII_COL_PA3 DEF_GPIOA( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
399 
400 #define GPIO_SPI1_NSS_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
401 #define GPIO_SPI3_NSS_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
402 #define GPIO_I2S3_WS_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
403 #define GPIO_USART2_CK_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
404 #define GPIO_OTG_HS_SOF_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
405 #define GPIO_DCMI_HSYNC_PA4 DEF_GPIOA( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
406 
407 #define GPIO_TIM2_CH1_PA5 DEF_GPIOA( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
408 #define GPIO_TIM2_ETR_PA5 DEF_GPIOA( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
409 #define GPIO_TIM8_CH1N_PA5 DEF_GPIOA( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
410 #define GPIO_SPI1_SCK_PA5 DEF_GPIOA( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
411 #define GPIO_OTG_HS_ULPI_CK_PA5 DEF_GPIOA( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
412 
413 #define GPIO_TIM1_BKIN_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
414 #define GPIO_TIM3_CH1_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
415 #define GPIO_TIM8_BKIN_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
416 #define GPIO_SPI1_MISO_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
417 #define GPIO_TIM13_CH1_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM13)
418 #define GPIO_DCMI_PIXCK_PA6 DEF_GPIOA( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
419 
420 #define GPIO_TIM1_CH1N_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
421 #define GPIO_TIM3_CH2_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
422 #define GPIO_TIM8_CH1N_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
423 #define GPIO_SPI1_MOSI_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
424 #define GPIO_TIM14_CH1_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_TIM14_CH1_PA7)
425 #define GPIO_ETH_MII_RX_DV_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
426 #define GPIO_ETH_RMII_CRS_DV_PA7 DEF_GPIOA( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
427 
428 #define GPIO_MCO1_PA8 DEF_GPIOA( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_MCO)
429 #define GPIO_TIM1_CH1_PA8 DEF_GPIOA( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
430 #define GPIO_I2C3_SCL_PA8 DEF_GPIOA( 8, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
431 #define GPIO_USART1_CK_PA8 DEF_GPIOA( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
432 #define GPIO_OTG_FS_SOF_PA8 DEF_GPIOA( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG1_FS)
433 
434 #define GPIO_TIM1_CH2_PA9 DEF_GPIOA( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
435 #define GPIO_I2C3_SMBA_PA9 DEF_GPIOA( 9, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
436 #define GPIO_USART1_TX_PA9 DEF_GPIOA( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
437 #define GPIO_DCMI_D0_PA9 DEF_GPIOA( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
438 
439 #define GPIO_TIM1_CH3_PA10 DEF_GPIOA(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
440 #define GPIO_USART1_RX_PA10 DEF_GPIOA(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
441 #define GPIO_OTG_FS_ID_PA10 DEF_GPIOA(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
442 #define GPIO_DCMI_D1_PA10 DEF_GPIOA(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
443 
444 #define GPIO_TIM1_CH4_PA11 DEF_GPIOA(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
445 #define GPIO_USART1_CTS_PA11 DEF_GPIOA(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
446 #define GPIO_CAN1_RX_PA11 DEF_GPIOA(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
447 #define GPIO_OTG_FS_DM_PA11 DEF_GPIOA(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
448 
449 #define GPIO_TIM1_ETR_PA12 DEF_GPIOA(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
450 #define GPIO_USART1_RTS_PA12 DEF_GPIOA(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
451 #define GPIO_CAN1_TX_PA12 DEF_GPIOA(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
452 #define GPIO_OTG_FS_DP_PA12 DEF_GPIOA(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
453 
454 #define GPIO_JTMS_SWDIO_PA13 DEF_GPIOA(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLUP | GPIO_AF_SWJ)
455 
456 #define GPIO_JTCK_SWCLK_PA14 DEF_GPIOA(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLDOWN | GPIO_AF_SWJ)
457 
458 #define GPIO_JTDI_PA15 DEF_GPIOA(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLUP | GPIO_AF_SWJ)
459 #define GPIO_TIM2_CH1_PA15 DEF_GPIOA(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
460 #define GPIO_TIM2_ETR_PA15 DEF_GPIOA(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
461 #define GPIO_SPI1_NSS_PA15 DEF_GPIOA(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
462 #define GPIO_SPI3_NSS_I2S3S_WS_PA15 DEF_GPIOA(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
463 
464 #define GPIO_TIM1_CH2N_PB0 DEF_GPIOB( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
465 #define GPIO_TIM3_CH3_PB0 DEF_GPIOB( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
466 #define GPIO_TIM8_CH2N_PB0 DEF_GPIOB( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
467 #define GPIO_OTG_HS_ULPI_D1_PB0 DEF_GPIOB( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
468 #define GPIO_ETH_MII_RXD2_PB0 DEF_GPIOB( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
469 
470 #define GPIO_TIM1_CH3N_PB1 DEF_GPIOB( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
471 #define GPIO_TIM3_CH4_PB1 DEF_GPIOB( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
472 #define GPIO_TIM8_CH3N_PB1 DEF_GPIOB( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
473 #define GPIO_OTG_HS_ULPI_D2_PB1 DEF_GPIOB( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
474 #define GPIO_ETH_MII_RXD3_PB1 DEF_GPIOB( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
475 
476 #define GPIO_JTDO_TRACESWO_PB3 DEF_GPIOB( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SWJ)
477 #define GPIO_TIM2_CH2_PB3 DEF_GPIOB( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
478 #define GPIO_SPI1_SCK_PB3 DEF_GPIOB( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
479 #define GPIO_SPI3_SCK_PB3 DEF_GPIOB( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
480 #define GPIO_I2S3_CK_PB3 DEF_GPIOB( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
481 
482 #define GPIO_NJTRST_PB4 DEF_GPIOB( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_PULLUP | GPIO_AF_SWJ)
483 #define GPIO_TIM3_CH1_PB4 DEF_GPIOB( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
484 #define GPIO_SPI1_MISO_PB4 DEF_GPIOB( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
485 #define GPIO_SPI3_MISO_PB4 DEF_GPIOB( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
486 #define GPIO_I2S3ext_SD_PB4 DEF_GPIOB( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2S3ext)
487 
488 #define GPIO_TIM3_CH2_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
489 #define GPIO_I2C1_SMBA_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C1)
490 #define GPIO_SPI1_MOSI_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
491 #define GPIO_SPI3_MOSI_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
492 #define GPIO_I2S3_SD_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
493 #define GPIO_CAN2_RX_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN2)
494 #define GPIO_OTG_HS_ULPI_D7_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
495 #define GPIO_ETH_PPS_OUT_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
496 #define GPIO_DCMI_D10_PB5 DEF_GPIOB( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
497 
498 #define GPIO_TIM4_CH1_PB6 DEF_GPIOB( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
499 #define GPIO_I2C1_SCL_PB6 DEF_GPIOB( 6, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C1)
500 #define GPIO_USART1_TX_PB6 DEF_GPIOB( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
501 #define GPIO_CAN2_TX_PB6 DEF_GPIOB( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN2)
502 #define GPIO_DCMI_D5_PB6 DEF_GPIOB( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
503 
504 #define GPIO_TIM4_CH2_PB7 DEF_GPIOB( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
505 #define GPIO_I2C1_SDA_PB7 DEF_GPIOB( 7, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C1)
506 #define GPIO_USART1_RX_PB7 DEF_GPIOB( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART1)
507 #define GPIO_FSMC_NL_PB7 DEF_GPIOB( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
508 #define GPIO_DCMI_VSYNC_PB7 DEF_GPIOB( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
509 
510 #define GPIO_TIM4_CH3_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
511 #define GPIO_TIM10_CH1_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM10)
512 #define GPIO_I2C1_SCL_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C1)
513 #define GPIO_CAN1_RX_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
514 #define GPIO_ETH_MII_TXD3_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
515 #define GPIO_SDIO_D4_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
516 #define GPIO_DCMI_D6_PB8 DEF_GPIOB( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
517 
518 #define GPIO_TIM4_CH4_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
519 #define GPIO_TIM11_CH1_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM11)
520 #define GPIO_I2C1_SDA_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C1)
521 #define GPIO_SPI2_NSS_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
522 #define GPIO_I2S2_WS_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
523 #define GPIO_CAN1_TX_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
524 #define GPIO_SDIO_D5_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
525 #define GPIO_DCMI_D7_PB9 DEF_GPIOB( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
526 
527 #define GPIO_TIM2_CH3_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
528 #define GPIO_I2C2_SCL_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
529 #define GPIO_SPI2_SCK_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
530 #define GPIO_I2S2_CK_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
531 #define GPIO_USART3_TX_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
532 #define GPIO_OTG_HS_ULPI_D3_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
533 #define GPIO_ETH_MII_RX_ER_PB10 DEF_GPIOB(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
534 
535 #define GPIO_TIM2_CH4_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM2)
536 #define GPIO_I2C2_SDA_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
537 #define GPIO_USART3_RX_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
538 #define GPIO_OTG_HS_ULPI_D4_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
539 #define GPIO_ETH_MII_TX_EN_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
540 #define GPIO_ETH_RMII_TX_EN_PB11 DEF_GPIOB(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
541 
542 #define GPIO_TIM1_BKIN_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
543 #define GPIO_I2C2_SMBA_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
544 #define GPIO_SPI2_NSS_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
545 #define GPIO_I2S2_WS_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
546 #define GPIO_USART3_CK_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
547 #define GPIO_CAN2_RX_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN2)
548 #define GPIO_OTG_HS_ULPI_D5_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
549 #define GPIO_ETH_MII_TXD0_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
550 #define GPIO_ETH_RMII_TXD0_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
551 #define GPIO_OTG_HS_ID_PB12 DEF_GPIOB(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS_FS)
552 
553 #define GPIO_TIM1_CH1N_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
554 #define GPIO_SPI2_SCK_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
555 #define GPIO_I2S2_CK_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
556 #define GPIO_USART3_CTS_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
557 #define GPIO_CAN2_TX_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN2)
558 #define GPIO_OTG_HS_ULPI_D6_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
559 #define GPIO_ETH_MII_TXD1_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
560 #define GPIO_ETH_RMII_TXD1_PB13 DEF_GPIOB(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
561 
562 #define GPIO_TIM1_CH2N_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
563 #define GPIO_TIM8_CH2N_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
564 #define GPIO_SPI2_MISO_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
565 #define GPIO_I2S2ext_SD_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
566 #define GPIO_USART3_RTS_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
567 #define GPIO_TIM12_CH1_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM12)
568 #define GPIO_OTG_HS_DM_PB14 DEF_GPIOB(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS_FS)
569 
570 #define GPIO_RTC_50Hz_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_RTC_50Hz)
571 #define GPIO_TIM1_CH3N_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
572 #define GPIO_TIM8_CH3N_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
573 #define GPIO_SPI2_MOSI_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
574 #define GPIO_I2S2_SD_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
575 #define GPIO_TIM12_CH2_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM12)
576 #define GPIO_OTG_HS_DP_PB15 DEF_GPIOB(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS_FS)
577 
578 #define GPIO_OTG_HS_ULPI_STP_PC0 DEF_GPIOC( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
579 
580 #define GPIO_ETH_MDC_PC1 DEF_GPIOC( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
581 
582 #define GPIO_SPI2_MISO_PC2 DEF_GPIOC( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
583 #define GPIO_I2S2ext_SD_PC2 DEF_GPIOC( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
584 #define GPIO_OTG_HS_ULPI_DIR_PC2 DEF_GPIOC( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
585 #define GPIO_ETH_MII_TXD2_PC2 DEF_GPIOC( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
586 
587 #define GPIO_SPI2_MOSI_PC3 DEF_GPIOC( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
588 #define GPIO_I2S2_SD_PC3 DEF_GPIOC( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
589 #define GPIO_OTG_HS_ULPI_NXT_PC3 DEF_GPIOC( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
590 #define GPIO_ETH_MII_TX_CLK_PC3 DEF_GPIOC( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
591 
592 #define GPIO_ETH_MII_RXD0_PC4 DEF_GPIOC( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
593 #define GPIO_ETH_RMII_RXD0_PC4 DEF_GPIOC( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
594 
595 #define GPIO_ETH_MII_RXD1_PC5 DEF_GPIOC( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
596 #define GPIO_ETH_RMII_RXD1_PC5 DEF_GPIOC( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
597 
598 #define GPIO_TIM3_CH1_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
599 #define GPIO_TIM8_CH1_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
600 #define GPIO_I2S2_MCK_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
601 #define GPIO_USART6_TX_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
602 #define GPIO_SDIO_D6_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
603 #define GPIO_DCMI_D0_PC6 DEF_GPIOC( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
604 
605 #define GPIO_TIM3_CH2_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
606 #define GPIO_TIM8_CH2_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
607 #define GPIO_I2S3_MCK_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
608 #define GPIO_USART6_RX_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
609 #define GPIO_SDIO_D7_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
610 #define GPIO_DCMI_D1_PC7 DEF_GPIOC( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
611 
612 #define GPIO_TIM3_CH3_PC8 DEF_GPIOC( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
613 #define GPIO_TIM8_CH3_PC8 DEF_GPIOC( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
614 #define GPIO_USART6_CK_PC8 DEF_GPIOC( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
615 #define GPIO_SDIO_D0_PC8 DEF_GPIOC( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
616 #define GPIO_DCMI_D2_PC8 DEF_GPIOC( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
617 
618 #define GPIO_MCO2_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_MCO)
619 #define GPIO_TIM3_CH4_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
620 #define GPIO_TIM8_CH4_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
621 #define GPIO_I2C3_SDA_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
622 #define GPIO_I2S_CKIN_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
623 #define GPIO_SDIO_D1_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
624 #define GPIO_DCMI_D3_PC9 DEF_GPIOC( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
625 
626 #define GPIO_SPI3_SCK_I2S3S_CK_PC10 DEF_GPIOC(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
627 #define GPIO_USART3_TX_PC10 DEF_GPIOC(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
628 #define GPIO_UART4_TX_PC10 DEF_GPIOC(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_UART4)
629 #define GPIO_SDIO_D2_PC10 DEF_GPIOC(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
630 #define GPIO_DCMI_D8_PC10 DEF_GPIOC(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
631 
632 #define GPIO_I2S3ext_SD_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2S3ext)
633 #define GPIO_SPI3_MISO_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
634 #define GPIO_USART3_RX_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
635 #define GPIO_UART4_RX_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_UART4)
636 #define GPIO_SDIO_D3_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
637 #define GPIO_DCMI_D4_PC11 DEF_GPIOC(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
638 
639 #define GPIO_SPI3_MOSI_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
640 #define GPIO_I2S3_SD_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
641 #define GPIO_USART3_CK_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
642 #define GPIO_UART5_TX_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_UART5)
643 #define GPIO_SDIO_CK_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
644 #define GPIO_DCMI_D9_PC12 DEF_GPIOC(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
645 
646 #define GPIO_CAN1_RX_PD0 DEF_GPIOD( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
647 #define GPIO_FSMC_D2_PD0 DEF_GPIOD( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
648 
649 #define GPIO_CAN1_TX_PD1 DEF_GPIOD( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
650 #define GPIO_FSMC_D3_PD1 DEF_GPIOD( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
651 
652 #define GPIO_TIM3_ETR_PD2 DEF_GPIOD( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM3)
653 #define GPIO_UART5_RX_PD2 DEF_GPIOD( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_UART5)
654 #define GPIO_SDIO_CMD_PD2 DEF_GPIOD( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SDIO)
655 #define GPIO_DCMI_D11_PD2 DEF_GPIOD( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
656 
657 #define GPIO_USART2_CTS_PD3 DEF_GPIOD( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
658 #define GPIO_FSMC_CLK_PD3 DEF_GPIOD( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
659 
660 #define GPIO_USART2_RTS_PD4 DEF_GPIOD( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
661 #define GPIO_FSMC_NOE_PD4 DEF_GPIOD( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
662 
663 #define GPIO_USART2_TX_PD5 DEF_GPIOD( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
664 #define GPIO_FSMC_NWE_PD5 DEF_GPIOD( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
665 
666 #define GPIO_USART2_RX_PD6 DEF_GPIOD( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
667 #define GPIO_FSMC_NWAIT_PD6 DEF_GPIOD( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
668 
669 #define GPIO_USART2_CK_PD7 DEF_GPIOD( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART2)
670 #define GPIO_FSMC_NE1_FSMC_NCE2_PD7 DEF_GPIOD( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
671 
672 #define GPIO_USART3_TX_PD8 DEF_GPIOD( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
673 #define GPIO_FSMC_D13_PD8 DEF_GPIOD( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
674 
675 #define GPIO_USART3_RX_PD9 DEF_GPIOD( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
676 #define GPIO_FSMC_D14_PD9 DEF_GPIOD( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
677 
678 #define GPIO_USART3_CK_PD10 DEF_GPIOD(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
679 #define GPIO_FSMC_D15_PD10 DEF_GPIOD(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
680 
681 #define GPIO_USART3_CTS_PD11 DEF_GPIOD(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
682 #define GPIO_FSMC_A16_PD11 DEF_GPIOD(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
683 
684 #define GPIO_TIM4_CH1_PD12 DEF_GPIOD(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
685 #define GPIO_USART3_RTS_PD12 DEF_GPIOD(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART3)
686 #define GPIO_FSMC_A17_PD12 DEF_GPIOD(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
687 
688 #define GPIO_TIM4_CH2_PD13 DEF_GPIOD(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
689 #define GPIO_FSMC_A18_PD13 DEF_GPIOD(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
690 
691 #define GPIO_TIM4_CH3_PD14 DEF_GPIOD(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
692 #define GPIO_FSMC_D0_PD14 DEF_GPIOD(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
693 
694 #define GPIO_TIM4_CH4_PD15 DEF_GPIOD(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
695 #define GPIO_FSMC_D1_PD15 DEF_GPIOD(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
696 
697 #define GPIO_TIM4_ETR_PE0 DEF_GPIOE( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM4)
698 #define GPIO_FSMC_NBL0_PE0 DEF_GPIOE( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
699 #define GPIO_DCMI_D2_PE0 DEF_GPIOE( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
700 
701 #define GPIO_FSMC_BLN1_PE1 DEF_GPIOE( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
702 #define GPIO_DCMI_D3_PE1 DEF_GPIOE( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
703 
704 #define GPIO_TRACECLK_PE2 DEF_GPIOE( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
705 #define GPIO_ETH_MII_TXD3_PE2 DEF_GPIOE( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
706 #define GPIO_FSMC_A23_PE2 DEF_GPIOE( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
707 
708 #define GPIO_TRACED0_PE3 DEF_GPIOE( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
709 #define GPIO_FSMC_A19_PE3 DEF_GPIOE( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
710 
711 #define GPIO_TRACED1_PE4 DEF_GPIOE( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
712 #define GPIO_FSMC_A20_PE4 DEF_GPIOE( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
713 #define GPIO_DCMI_D4_PE4 DEF_GPIOE( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
714 
715 #define GPIO_TRACED2_PE5 DEF_GPIOE( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
716 #define GPIO_TIM9_CH1_PE5 DEF_GPIOE( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
717 #define GPIO_FSMC_A21_PE5 DEF_GPIOE( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
718 #define GPIO_DCMI_D6_PE5 DEF_GPIOE( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
719 
720 #define GPIO_TRACED3_PE6 DEF_GPIOE( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TRACE)
721 #define GPIO_TIM9_CH2_PE6 DEF_GPIOE( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM9)
722 #define GPIO_FSMC_A22_PE6 DEF_GPIOE( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
723 #define GPIO_DCMI_D7_PE6 DEF_GPIOE( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
724 
725 #define GPIO_TIM1_ETR_PE7 DEF_GPIOE( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
726 #define GPIO_FSMC_D4_PE7 DEF_GPIOE( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
727 
728 #define GPIO_TIM1_CH1N_PE8 DEF_GPIOE( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
729 #define GPIO_FSMC_D5_PE8 DEF_GPIOE( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
730 
731 #define GPIO_TIM1_CH1_PE9 DEF_GPIOE( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
732 #define GPIO_FSMC_D6_PE9 DEF_GPIOE( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
733 
734 #define GPIO_TIM1_CH2N_PE10 DEF_GPIOE(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
735 #define GPIO_FSMC_D7_PE10 DEF_GPIOE(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
736 
737 #define GPIO_TIM1_CH2_PE11 DEF_GPIOE(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
738 #define GPIO_FSMC_D8_PE11 DEF_GPIOE(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
739 
740 #define GPIO_TIM1_CH3N_PE12 DEF_GPIOE(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
741 #define GPIO_FSMC_D9_PE12 DEF_GPIOE(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
742 
743 #define GPIO_TIM1_CH3_PE13 DEF_GPIOE(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
744 #define GPIO_FSMC_D10_PE13 DEF_GPIOE(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
745 
746 #define GPIO_TIM1_CH4_PE14 DEF_GPIOE(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
747 #define GPIO_FSMC_D11_PE14 DEF_GPIOE(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
748 
749 #define GPIO_TIM1_BKIN_PE15 DEF_GPIOE(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM1)
750 #define GPIO_FSMC_D12_PE15 DEF_GPIOE(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
751 
752 #define GPIO_I2C2_SDA_PF0 DEF_GPIOF( 0, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
753 #define GPIO_FSMC_A0_PF0 DEF_GPIOF( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
754 
755 #define GPIO_I2C2_SCL_PF1 DEF_GPIOF( 1, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
756 #define GPIO_FSMC_A1_PF1 DEF_GPIOF( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
757 
758 #define GPIO_I2C2_SMBA_PF2 DEF_GPIOF( 2, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
759 #define GPIO_FSMC_A2_PF2 DEF_GPIOF( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
760 
761 #define GPIO_FSMC_A3_PF3 DEF_GPIOF( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
762 
763 #define GPIO_FSMC_A4_PF4 DEF_GPIOF( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
764 
765 #define GPIO_FSMC_A5_PF5 DEF_GPIOF( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
766 
767 #define GPIO_TIM10_CH1_PF6 DEF_GPIOF( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM10)
768 #define GPIO_FSMC_NIORD_PF6 DEF_GPIOF( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
769 
770 #define GPIO_TIM11_CH1_PF7 DEF_GPIOF( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM11)
771 #define GPIO_FSMC_NREG_PF7 DEF_GPIOF( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
772 
773 #define GPIO_TIM13_CH1_PF8 DEF_GPIOF( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM13)
774 #define GPIO_FSMC_NIOWR_PF8 DEF_GPIOF( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
775 
776 #define GPIO_TIM14_CH1_PF9 DEF_GPIOF( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM14)
777 #define GPIO_FSMC_CD_PF9 DEF_GPIOF( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
778 
779 #define GPIO_FSMC_INTR_PF10 DEF_GPIOF(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
780 
781 #define GPIO_DCMI_D12_PF11 DEF_GPIOF(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
782 
783 #define GPIO_FSMC_A6_PF12 DEF_GPIOF(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
784 
785 #define GPIO_FSMC_A7_PF13 DEF_GPIOF(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
786 
787 #define GPIO_FSMC_A8_PF14 DEF_GPIOF(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
788 
789 #define GPIO_FSMC_A9_PF15 DEF_GPIOF(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
790 
791 #define GPIO_FSMC_A10_PG0 DEF_GPIOG( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
792 
793 #define GPIO_FSMC_A11_PG1 DEF_GPIOG( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
794 
795 #define GPIO_FSMC_A12_PG2 DEF_GPIOG( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
796 
797 #define GPIO_FSMC_A13_PG3 DEF_GPIOG( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
798 
799 #define GPIO_FSMC_A14_PG4 DEF_GPIOG( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
800 
801 #define GPIO_FSMC_A15_PG5 DEF_GPIOG( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
802 
803 #define GPIO_FSMC_INT2_PG6 DEF_GPIOG( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
804 
805 #define GPIO_USART6_CK_PG7 DEF_GPIOG( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
806 #define GPIO_FSMC_INT3_PG7 DEF_GPIOG( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
807 
808 #define GPIO_USART6_RTS_PG8 DEF_GPIOG( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
809 #define GPIO_ETH_PPS_OUT_PG8 DEF_GPIOG( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
810 
811 #define GPIO_USART6_RX_PG9 DEF_GPIOG( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
812 #define GPIO_FSMC_NE2_FSMC_NCE3_PG9 DEF_GPIOG( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
813 
814 #define GPIO_FSMC_NCE4_1_FSMC_NE3_PG10 DEF_GPIOG(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
815 
816 #define GPIO_ETH_MII_TX_EN_PG11 DEF_GPIOG(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
817 #define GPIO_ETH_RMII_TX_EN_PG11 DEF_GPIOG(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
818 #define GPIO_FSMC_NCE4_2_PG11 DEF_GPIOG(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
819 
820 #define GPIO_USART6_RTS_PG12 DEF_GPIOG(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
821 #define GPIO_FSMC_NE4_PG12 DEF_GPIOG(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
822 
823 #define GPIO_USART6_CTS_PG13 DEF_GPIOG(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
824 #define GPIO_ETH_MII_TXD0_PG13 DEF_GPIOG(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
825 #define GPIO_ETH_RMII_TXD0_PG13 DEF_GPIOG(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
826 #define GPIO_FSMC_A24_PG13 DEF_GPIOG(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
827 
828 #define GPIO_USART6_TX_PG14 DEF_GPIOG(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
829 #define GPIO_ETH_MII_TXD1_PG14 DEF_GPIOG(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
830 #define GPIO_ETH_RMII_TXD1_PG14 DEF_GPIOG(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
831 #define GPIO_FSMC_A25_PG14 DEF_GPIOG(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_FSMC)
832 
833 #define GPIO_USART6_CTS_PG15 DEF_GPIOG(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_USART6)
834 #define GPIO_DCMI_D13_PG15 DEF_GPIOG(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
835 
836 #define GPIO_ETH_MII_CRS_PH2 DEF_GPIOH( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
837 
838 #define GPIO_ETH_MII_COL_PH3 DEF_GPIOH( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
839 
840 #define GPIO_I2C2_SCL_PH4 DEF_GPIOH( 4, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
841 #define GPIO_OTG_HS_ULPI_NXT_PH4 DEF_GPIOH( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
842 
843 #define GPIO_I2C2_SDA_PH5 DEF_GPIOH( 5, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
844 
845 #define GPIO_I2C2_SMBA_PH6 DEF_GPIOH( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C2)
846 #define GPIO_TIM12_CH1_PH6 DEF_GPIOH( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM12)
847 #define GPIO_ETH_MII_RXD2_PH6 DEF_GPIOH( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
848 
849 #define GPIO_I2C3_SCL_PH7 DEF_GPIOH( 7, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
850 #define GPIO_ETH_MII_RXD3_PH7 DEF_GPIOH( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
851 
852 #define GPIO_I2C3_SDA_PH8 DEF_GPIOH( 8, GPIO_AF | GPIO_OD | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
853 #define GPIO_DCMI_HSYNC_PH8 DEF_GPIOH( 8, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
854 
855 #define GPIO_I2C3_SMBA_PH9 DEF_GPIOH( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_I2C3)
856 #define GPIO_TIM12_CH2_PH9 DEF_GPIOH( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM12)
857 #define GPIO_DCMI_D0_PH9 DEF_GPIOH( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
858 
859 #define GPIO_TIM5_CH1_PH10 DEF_GPIOH(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
860 #define GPIO_DCMI_D1_PH10 DEF_GPIOH(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
861 
862 #define GPIO_TIM5_CH2_PH11 DEF_GPIOH(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
863 #define GPIO_DCMI_D2_PH11 DEF_GPIOH(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
864 
865 #define GPIO_TIM5_CH3_PH12 DEF_GPIOH(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
866 #define GPIO_DCMI_D3_PH12 DEF_GPIOH(12, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
867 
868 #define GPIO_TIM8_CH1N_PH13 DEF_GPIOH(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
869 #define GPIO_CAN1_TX_PH13 DEF_GPIOH(13, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
870 
871 #define GPIO_TIM8_CH2N_PH14 DEF_GPIOH(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
872 #define GPIO_DCMI_D4_PH14 DEF_GPIOH(14, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
873 
874 #define GPIO_TIM8_CH3N_PH15 DEF_GPIOH(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
875 #define GPIO_DCMI_D11_PH15 DEF_GPIOH(15, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
876 
877 #define GPIO_TIM5_CH4_PI0 DEF_GPIOI( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM5)
878 #define GPIO_SPI2_NSS_PI0 DEF_GPIOI( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
879 #define GPIO_I2S2_WS_PI0 DEF_GPIOI( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
880 #define GPIO_DCMI_D13_PI0 DEF_GPIOI( 0, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
881 
882 #define GPIO_SPI2_SCK_PI1 DEF_GPIOI( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
883 #define GPIO_I2S2_CK_PI1 DEF_GPIOI( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
884 #define GPIO_DCMI_D8_PI1 DEF_GPIOI( 1, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
885 
886 #define GPIO_TIM8_CH4_PI2 DEF_GPIOI( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
887 #define GPIO_SPI2_MISO_PI2 DEF_GPIOI( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
888 #define GPIO_I2S2ext_SD_PI2 DEF_GPIOI( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI3)
889 #define GPIO_DCMI_D9_PI2 DEF_GPIOI( 2, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
890 
891 #define GPIO_TIM8_ETR_PI3 DEF_GPIOI( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
892 #define GPIO_SPI2_MOSI_PI3 DEF_GPIOI( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI2)
893 #define GPIO_I2S2_SD_PI3 DEF_GPIOI( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_SPI1)
894 #define GPIO_DCMI_D10_PI3 DEF_GPIOI( 3, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
895 
896 #define GPIO_TIM8_BKIN_PI4 DEF_GPIOI( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
897 #define GPIO_DCMI_D5_PI4 DEF_GPIOI( 4, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
898 
899 #define GPIO_TIM8_CH1_PI5 DEF_GPIOI( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
900 #define GPIO_DCMI_VSYNC_PI5 DEF_GPIOI( 5, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
901 
902 #define GPIO_TIM8_CH2_PI6 DEF_GPIOI( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
903 #define GPIO_DCMI_D6_PI6 DEF_GPIOI( 6, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
904 
905 #define GPIO_TIM8_CH3_PI7 DEF_GPIOI( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_TIM8)
906 #define GPIO_DCMI_D7_PI7 DEF_GPIOI( 7, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_DCMI)
907 
908 #define GPIO_CAN1_RX_PI9 DEF_GPIOI( 9, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_CAN1)
909 
910 #define GPIO_ETH_MII_RX_ER_PI10 DEF_GPIOI(10, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_ETH)
911 
912 #define GPIO_OTG_HS_ULPI_DIR_PI11 DEF_GPIOI(11, GPIO_AF | GPIO_PP | GPIO_SPEED_100 | GPIO_NOPULL | GPIO_AF_OTG_HS)
913 
914 
915 #ifdef __cplusplus
916  }
917 #endif
918 
919 /**
920  * @}
921  */
922 #endif /* HEIVS_STM32_GPIO_H */
This file contains all the functions prototypes for the GPIO firmware library.
Output speed : 25 MHz.
Definition: stm32_gpio.h:71
__IO uint32_t MODER
Definition: stm32f4xx.h:645
uint8_t nr
Pin number (0 for GPIOx0, ... , 3 for GPIOx3, ...)
Definition: stm32_gpio.h:99
gpio_mode_e
GPIO modes, can be ORed.
Definition: stm32_gpio.h:41
Output (default 1)
Definition: stm32_gpio.h:53
pull down
Definition: stm32_gpio.h:86
uint8_t ctrl
Controller number (0 for GPIOA, 1 for GPIOB, ...)
Definition: stm32_gpio.h:98
Output speed : 100 MHz.
Definition: stm32_gpio.h:77
enum gpio_mode_e mode
mode for instance GPIO_INPUT | GPIO_PULLDOWN
Definition: stm32_gpio.h:101
static uint32_t gpio_get_internal(const struct gpio_t *gpio)
Get gpio internal level.
Definition: stm32_gpio.h:242
Alternate function.
Definition: stm32_gpio.h:56
static void gpio_set(const struct gpio_t *gpio, uint32_t value)
Set a gpio.
Definition: stm32_gpio.h:260
No pull up or down.
Definition: stm32_gpio.h:80
__IO uint32_t ODR
Definition: stm32f4xx.h:650
static uint32_t gpio_get(const struct gpio_t *gpio)
Get gpio level.
Definition: stm32_gpio.h:219
Errors definitions.
__IO uint32_t IDR
Definition: stm32f4xx.h:649
static GPIO_TypeDef * _internal_gpio_get_ctrl(const struct gpio_t *gpio)
Get the gpio controller given the gpio struct.
Definition: stm32_gpio.h:175
General Purpose I/O.
Definition: stm32f4xx.h:643
static void gpio_set_direction(const struct gpio_t *gpio, enum gpio_mode_e dir)
Set a gpio direction.
Definition: stm32_gpio.h:286
__IO uint16_t BSRRH
Definition: stm32f4xx.h:652
GPIO control structure.
Definition: stm32_gpio.h:96
Input.
Definition: stm32_gpio.h:44
uint16_t mask
Pin mask (0x1 for GPIOx0, ... , 0x4 for GPIOx3, ...)
Definition: stm32_gpio.h:100
__IO uint16_t BSRRL
Definition: stm32f4xx.h:651
Output type : Open Drain.
Definition: stm32_gpio.h:65
Output speed : 50 MHz.
Definition: stm32_gpio.h:74
Output type : Push-Pull.
Definition: stm32_gpio.h:62
Output (default 0)
Definition: stm32_gpio.h:50
status_e gpio_setup_list(const struct gpio_t gpio[], size_t len)
Setup an array of gpio.
Definition: stm32_gpio.c:47
Output speed : 2 MHz.
Definition: stm32_gpio.h:68
status_e gpio_setup(const struct gpio_t *gpio)
Setup a gpio.
Definition: stm32_gpio.c:9
status_e
Known errors.
Definition: error.h:21
static void gpio_toggle(const struct gpio_t *gpio)
Toggle a gpio line.
Definition: stm32_gpio.h:185
Output (same as GPIO_OUTPUT_0)
Definition: stm32_gpio.h:47
Pull up.
Definition: stm32_gpio.h:83
Analog.
Definition: stm32_gpio.h:59