source: asp3_wo_tecs/trunk/arch/arm_m_gcc/stm32f4xx_stm32cube/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h@ 303

Last change on this file since 303 was 303, checked in by ertl-honda, 7 years ago

nucleo_f401re依存部の追加

File size: 66.1 KB
Line 
1/**
2 ******************************************************************************
3 * @file stm32f4xx_hal_gpio_ex.h
4 * @author MCD Application Team
5 * @version V1.4.1
6 * @date 09-October-2015
7 * @brief Header file of GPIO HAL Extension module.
8 ******************************************************************************
9 * @attention
10 *
11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
12 *
13 * Redistribution and use in source and binary forms, with or without modification,
14 * are permitted provided that the following conditions are met:
15 * 1. Redistributions of source code must retain the above copyright notice,
16 * this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
18 * this list of conditions and the following disclaimer in the documentation
19 * and/or other materials provided with the distribution.
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 ******************************************************************************
36 */
37
38/* Define to prevent recursive inclusion -------------------------------------*/
39#ifndef __STM32F4xx_HAL_GPIO_EX_H
40#define __STM32F4xx_HAL_GPIO_EX_H
41
42#ifdef __cplusplus
43 extern "C" {
44#endif
45
46/* Includes ------------------------------------------------------------------*/
47#include "stm32f4xx_hal_def.h"
48
49/** @addtogroup STM32F4xx_HAL_Driver
50 * @{
51 */
52
53/** @defgroup GPIOEx GPIOEx
54 * @{
55 */
56
57/* Exported types ------------------------------------------------------------*/
58/* Exported constants --------------------------------------------------------*/
59/** @defgroup GPIOEx_Exported_Constants GPIO Exported Constants
60 * @{
61 */
62
63/** @defgroup GPIO_Alternate_function_selection GPIO Alternate Function Selection
64 * @{
65 */
66
67/*------------------------------------------ STM32F429xx/STM32F439xx ---------*/
68#if defined(STM32F429xx) || defined(STM32F439xx)
69/**
70 * @brief AF 0 selection
71 */
72#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
73#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
74#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
75#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
76#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
77
78/**
79 * @brief AF 1 selection
80 */
81#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
82#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
83
84/**
85 * @brief AF 2 selection
86 */
87#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
88#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
89#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
90
91/**
92 * @brief AF 3 selection
93 */
94#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
95#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
96#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
97#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
98
99/**
100 * @brief AF 4 selection
101 */
102#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
103#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
104#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
105
106/**
107 * @brief AF 5 selection
108 */
109#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
110#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
111#define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */
112#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
113#define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */
114#define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */
115#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
116
117/**
118 * @brief AF 6 selection
119 */
120#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
121#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
122#define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */
123
124/**
125 * @brief AF 7 selection
126 */
127#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
128#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
129#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
130#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
131
132/**
133 * @brief AF 8 selection
134 */
135#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
136#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
137#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
138#define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */
139#define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */
140
141/**
142 * @brief AF 9 selection
143 */
144#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
145#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
146#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
147#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
148#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
149#define GPIO_AF9_LTDC ((uint8_t)0x09) /* LCD-TFT Alternate Function mapping */
150
151/**
152 * @brief AF 10 selection
153 */
154#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
155#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
156
157/**
158 * @brief AF 11 selection
159 */
160#define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */
161
162/**
163 * @brief AF 12 selection
164 */
165#define GPIO_AF12_FMC ((uint8_t)0xC) /* FMC Alternate Function mapping */
166#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
167#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
168
169/**
170 * @brief AF 13 selection
171 */
172#define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */
173
174/**
175 * @brief AF 14 selection
176 */
177#define GPIO_AF14_LTDC ((uint8_t)0x0E) /* LCD-TFT Alternate Function mapping */
178
179/**
180 * @brief AF 15 selection
181 */
182#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
183#endif /* STM32F429xx || STM32F439xx */
184/*----------------------------------------------------------------------------*/
185
186/*---------------------------------- STM32F427xx/STM32F437xx------------------*/
187#if defined(STM32F427xx) || defined(STM32F437xx)
188/**
189 * @brief AF 0 selection
190 */
191#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
192#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
193#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
194#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
195#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
196
197/**
198 * @brief AF 1 selection
199 */
200#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
201#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
202
203/**
204 * @brief AF 2 selection
205 */
206#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
207#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
208#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
209
210/**
211 * @brief AF 3 selection
212 */
213#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
214#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
215#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
216#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
217
218/**
219 * @brief AF 4 selection
220 */
221#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
222#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
223#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
224
225/**
226 * @brief AF 5 selection
227 */
228#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
229#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
230#define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */
231#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
232#define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */
233#define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */
234/** @brief GPIO_Legacy
235 */
236#define GPIO_AF5_I2S3ext GPIO_AF5_SPI3 /* I2S3ext_SD Alternate Function mapping */
237
238/**
239 * @brief AF 6 selection
240 */
241#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
242#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
243#define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */
244
245/**
246 * @brief AF 7 selection
247 */
248#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
249#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
250#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
251#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
252
253/**
254 * @brief AF 8 selection
255 */
256#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
257#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
258#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
259#define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */
260#define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */
261
262/**
263 * @brief AF 9 selection
264 */
265#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
266#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
267#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
268#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
269#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
270
271/**
272 * @brief AF 10 selection
273 */
274#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
275#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
276
277/**
278 * @brief AF 11 selection
279 */
280#define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */
281
282/**
283 * @brief AF 12 selection
284 */
285#define GPIO_AF12_FMC ((uint8_t)0xC) /* FMC Alternate Function mapping */
286#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
287#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
288
289/**
290 * @brief AF 13 selection
291 */
292#define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */
293
294/**
295 * @brief AF 15 selection
296 */
297#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
298#endif /* STM32F427xx || STM32F437xx */
299/*----------------------------------------------------------------------------*/
300
301/*---------------------------------- STM32F407xx/STM32F417xx------------------*/
302#if defined(STM32F407xx) || defined(STM32F417xx)
303/**
304 * @brief AF 0 selection
305 */
306#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
307#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
308#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
309#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
310#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
311
312/**
313 * @brief AF 1 selection
314 */
315#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
316#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
317
318/**
319 * @brief AF 2 selection
320 */
321#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
322#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
323#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
324
325/**
326 * @brief AF 3 selection
327 */
328#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
329#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
330#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
331#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
332
333/**
334 * @brief AF 4 selection
335 */
336#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
337#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
338#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
339
340/**
341 * @brief AF 5 selection
342 */
343#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
344#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
345#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
346
347/**
348 * @brief AF 6 selection
349 */
350#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
351#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
352
353/**
354 * @brief AF 7 selection
355 */
356#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
357#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
358#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
359#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
360
361/**
362 * @brief AF 8 selection
363 */
364#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
365#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
366#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
367
368/**
369 * @brief AF 9 selection
370 */
371#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
372#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
373#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
374#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
375#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
376
377/**
378 * @brief AF 10 selection
379 */
380#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
381#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
382
383/**
384 * @brief AF 11 selection
385 */
386#define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */
387
388/**
389 * @brief AF 12 selection
390 */
391#define GPIO_AF12_FSMC ((uint8_t)0xC) /* FSMC Alternate Function mapping */
392#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
393#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
394
395/**
396 * @brief AF 13 selection
397 */
398#define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */
399
400/**
401 * @brief AF 15 selection
402 */
403#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
404#endif /* STM32F407xx || STM32F417xx */
405/*----------------------------------------------------------------------------*/
406
407/*---------------------------------- STM32F405xx/STM32F415xx------------------*/
408#if defined(STM32F405xx) || defined(STM32F415xx)
409/**
410 * @brief AF 0 selection
411 */
412#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
413#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
414#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
415#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
416#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
417
418/**
419 * @brief AF 1 selection
420 */
421#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
422#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
423
424/**
425 * @brief AF 2 selection
426 */
427#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
428#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
429#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
430
431/**
432 * @brief AF 3 selection
433 */
434#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
435#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
436#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
437#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
438
439/**
440 * @brief AF 4 selection
441 */
442#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
443#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
444#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
445
446/**
447 * @brief AF 5 selection
448 */
449#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
450#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
451#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
452
453/**
454 * @brief AF 6 selection
455 */
456#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
457#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
458
459/**
460 * @brief AF 7 selection
461 */
462#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
463#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
464#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
465#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
466
467/**
468 * @brief AF 8 selection
469 */
470#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
471#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
472#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
473
474/**
475 * @brief AF 9 selection
476 */
477#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
478#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
479#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
480#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
481#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
482
483/**
484 * @brief AF 10 selection
485 */
486#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
487#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
488
489/**
490 * @brief AF 12 selection
491 */
492#define GPIO_AF12_FSMC ((uint8_t)0xC) /* FSMC Alternate Function mapping */
493#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
494#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
495
496/**
497 * @brief AF 15 selection
498 */
499#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
500#endif /* STM32F405xx || STM32F415xx */
501
502/*----------------------------------------------------------------------------*/
503
504/*---------------------------------------- STM32F401xx------------------------*/
505#if defined(STM32F401xC) || defined(STM32F401xE)
506/**
507 * @brief AF 0 selection
508 */
509#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
510#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
511#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
512#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
513#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
514
515/**
516 * @brief AF 1 selection
517 */
518#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
519#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
520
521/**
522 * @brief AF 2 selection
523 */
524#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
525#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
526#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
527
528/**
529 * @brief AF 3 selection
530 */
531#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
532#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
533#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
534
535/**
536 * @brief AF 4 selection
537 */
538#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
539#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
540#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
541
542/**
543 * @brief AF 5 selection
544 */
545#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
546#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
547#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
548#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
549
550/**
551 * @brief AF 6 selection
552 */
553#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
554#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
555
556/**
557 * @brief AF 7 selection
558 */
559#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
560#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
561#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
562
563/**
564 * @brief AF 8 selection
565 */
566#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
567
568/**
569 * @brief AF 9 selection
570 */
571#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
572#define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */
573#define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */
574
575
576/**
577 * @brief AF 10 selection
578 */
579#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
580
581/**
582 * @brief AF 12 selection
583 */
584#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
585
586/**
587 * @brief AF 15 selection
588 */
589#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
590#endif /* STM32F401xC || STM32F401xE */
591/*----------------------------------------------------------------------------*/
592/*---------------------------------------- STM32F411xx------------------------*/
593#if defined(STM32F411xE)
594/**
595 * @brief AF 0 selection
596 */
597#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
598#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
599#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
600#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
601#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
602
603/**
604 * @brief AF 1 selection
605 */
606#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
607#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
608
609/**
610 * @brief AF 2 selection
611 */
612#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
613#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
614#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
615
616/**
617 * @brief AF 3 selection
618 */
619#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
620#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
621#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
622
623/**
624 * @brief AF 4 selection
625 */
626#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
627#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
628#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
629
630/**
631 * @brief AF 5 selection
632 */
633#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */
634#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
635#define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */
636#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
637#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
638
639/**
640 * @brief AF 6 selection
641 */
642#define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */
643#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
644#define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4/I2S4 Alternate Function mapping */
645#define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */
646#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
647
648/**
649 * @brief AF 7 selection
650 */
651#define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */
652#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
653#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
654#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
655
656/**
657 * @brief AF 8 selection
658 */
659#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
660
661/**
662 * @brief AF 9 selection
663 */
664#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
665#define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */
666#define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */
667
668/**
669 * @brief AF 10 selection
670 */
671#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
672
673/**
674 * @brief AF 12 selection
675 */
676#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
677
678/**
679 * @brief AF 15 selection
680 */
681#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
682#endif /* STM32F411xE */
683
684/*---------------------------------------- STM32F410xx------------------------*/
685#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
686/**
687 * @brief AF 0 selection
688 */
689#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
690#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
691#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
692#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
693#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
694
695/**
696 * @brief AF 1 selection
697 */
698#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
699#define GPIO_AF1_LPTIM1 ((uint8_t)0x01) /* LPTIM1 Alternate Function mapping */
700
701/**
702 * @brief AF 2 selection
703 */
704#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
705
706/**
707 * @brief AF 3 selection
708 */
709#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
710#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
711
712/**
713 * @brief AF 4 selection
714 */
715#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
716#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
717#define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */
718
719/**
720 * @brief AF 5 selection
721 */
722#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */
723#if defined(STM32F410Cx) || defined(STM32F410Rx)
724#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
725#endif /* STM32F410Cx || STM32F410Rx */
726
727/**
728 * @brief AF 6 selection
729 */
730#define GPIO_AF6_SPI1 ((uint8_t)0x06) /* SPI1 Alternate Function mapping */
731#if defined(STM32F410Cx) || defined(STM32F410Rx)
732#define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */
733#endif /* STM32F410Cx || STM32F410Rx */
734#define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */
735/**
736 * @brief AF 7 selection
737 */
738#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
739#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
740
741/**
742 * @brief AF 8 selection
743 */
744#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
745
746/**
747 * @brief AF 9 selection
748 */
749#define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */
750#define GPIO_AF9_FMPI2C1 ((uint8_t)0x09) /* FMPI2C1 Alternate Function mapping */
751
752/**
753 * @brief AF 15 selection
754 */
755#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
756#endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */
757
758/*---------------------------------------- STM32F446xx -----------------------*/
759#if defined(STM32F446xx)
760/**
761 * @brief AF 0 selection
762 */
763#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
764#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
765#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
766#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
767#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
768
769/**
770 * @brief AF 1 selection
771 */
772#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
773#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
774
775/**
776 * @brief AF 2 selection
777 */
778#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
779#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
780#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
781
782/**
783 * @brief AF 3 selection
784 */
785#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
786#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
787#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
788#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
789#define GPIO_AF3_CEC ((uint8_t)0x03) /* CEC Alternate Function mapping */
790
791/**
792 * @brief AF 4 selection
793 */
794#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
795#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
796#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
797#define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */
798#define GPIO_AF4_CEC ((uint8_t)0x04) /* CEC Alternate Function mapping */
799
800/**
801 * @brief AF 5 selection
802 */
803#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */
804#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
805#define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */
806#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
807
808/**
809 * @brief AF 6 selection
810 */
811#define GPIO_AF6_SPI2 ((uint8_t)0x06) /* SPI2/I2S2 Alternate Function mapping */
812#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
813#define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4 Alternate Function mapping */
814#define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */
815
816/**
817 * @brief AF 7 selection
818 */
819#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
820#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
821#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
822#define GPIO_AF7_UART5 ((uint8_t)0x07) /* UART5 Alternate Function mapping */
823#define GPIO_AF7_SPI2 ((uint8_t)0x07) /* SPI2/I2S2 Alternate Function mapping */
824#define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */
825#define GPIO_AF7_SPDIFRX ((uint8_t)0x07) /* SPDIFRX Alternate Function mapping */
826
827/**
828 * @brief AF 8 selection
829 */
830#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
831#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
832#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
833#define GPIO_AF8_SPDIFRX ((uint8_t)0x08) /* SPDIFRX Alternate Function mapping */
834#define GPIO_AF8_SAI2 ((uint8_t)0x08) /* SAI2 Alternate Function mapping */
835
836/**
837 * @brief AF 9 selection
838 */
839#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
840#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
841#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
842#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
843#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
844#define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */
845
846/**
847 * @brief AF 10 selection
848 */
849#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
850#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
851#define GPIO_AF10_SAI2 ((uint8_t)0xA) /* SAI2 Alternate Function mapping */
852#define GPIO_AF10_QSPI ((uint8_t)0xA) /* QSPI Alternate Function mapping */
853
854/**
855 * @brief AF 11 selection
856 */
857#define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */
858
859/**
860 * @brief AF 12 selection
861 */
862#define GPIO_AF12_FMC ((uint8_t)0xC) /* FMC Alternate Function mapping */
863#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
864#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
865
866/**
867 * @brief AF 13 selection
868 */
869#define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */
870
871/**
872 * @brief AF 15 selection
873 */
874#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
875
876#endif /* STM32F446xx */
877/*----------------------------------------------------------------------------*/
878
879/*-------------------------------- STM32F469xx/STM32F479xx--------------------*/
880#if defined(STM32F469xx) || defined(STM32F479xx)
881/**
882 * @brief AF 0 selection
883 */
884#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */
885#define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */
886#define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
887#define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */
888#define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */
889
890/**
891 * @brief AF 1 selection
892 */
893#define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */
894#define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */
895
896/**
897 * @brief AF 2 selection
898 */
899#define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */
900#define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */
901#define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */
902
903/**
904 * @brief AF 3 selection
905 */
906#define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
907#define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
908#define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
909#define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
910
911/**
912 * @brief AF 4 selection
913 */
914#define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
915#define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
916#define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
917
918/**
919 * @brief AF 5 selection
920 */
921#define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
922#define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
923#define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */
924#define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */
925#define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */
926#define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */
927#define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */
928
929/**
930 * @brief AF 6 selection
931 */
932#define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
933#define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */
934#define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */
935
936/**
937 * @brief AF 7 selection
938 */
939#define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
940#define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
941#define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
942#define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */
943
944/**
945 * @brief AF 8 selection
946 */
947#define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
948#define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
949#define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
950#define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */
951#define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */
952
953/**
954 * @brief AF 9 selection
955 */
956#define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */
957#define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */
958#define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */
959#define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */
960#define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */
961#define GPIO_AF9_LTDC ((uint8_t)0x09) /* LCD-TFT Alternate Function mapping */
962#define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */
963
964
965/**
966 * @brief AF 10 selection
967 */
968#define GPIO_AF10_OTG_FS ((uint8_t)0xA) /* OTG_FS Alternate Function mapping */
969#define GPIO_AF10_OTG_HS ((uint8_t)0xA) /* OTG_HS Alternate Function mapping */
970#define GPIO_AF10_QSPI ((uint8_t)0xA) /* QSPI Alternate Function mapping */
971
972
973/**
974 * @brief AF 11 selection
975 */
976#define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */
977
978/**
979 * @brief AF 12 selection
980 */
981#define GPIO_AF12_FMC ((uint8_t)0xC) /* FMC Alternate Function mapping */
982#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xC) /* OTG HS configured in FS, Alternate Function mapping */
983#define GPIO_AF12_SDIO ((uint8_t)0xC) /* SDIO Alternate Function mapping */
984
985/**
986 * @brief AF 13 selection
987 */
988#define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */
989#define GPIO_AF13_DSI ((uint8_t)0x0D) /* DSI Alternate Function mapping */
990
991/**
992 * @brief AF 14 selection
993 */
994#define GPIO_AF14_LTDC ((uint8_t)0x0E) /* LCD-TFT Alternate Function mapping */
995
996/**
997 * @brief AF 15 selection
998 */
999#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */
1000
1001#endif /* STM32F469xx || STM32F479xx */
1002/*----------------------------------------------------------------------------*/
1003/**
1004 * @}
1005 */
1006
1007/**
1008 * @}
1009 */
1010
1011/* Exported macro ------------------------------------------------------------*/
1012/** @defgroup GPIOEx_Exported_Macros GPIO Exported Macros
1013 * @{
1014 */
1015/**
1016 * @}
1017 */
1018
1019/* Exported functions --------------------------------------------------------*/
1020/** @defgroup GPIOEx_Exported_Functions GPIO Exported Functions
1021 * @{
1022 */
1023/**
1024 * @}
1025 */
1026
1027/* Private types -------------------------------------------------------------*/
1028/* Private variables ---------------------------------------------------------*/
1029/* Private constants ---------------------------------------------------------*/
1030/** @defgroup GPIOEx_Private_Constants GPIO Private Constants
1031 * @{
1032 */
1033/**
1034 * @}
1035 */
1036
1037/* Private macros ------------------------------------------------------------*/
1038/** @defgroup GPIOEx_Private_Macros GPIO Private Macros
1039 * @{
1040 */
1041/** @defgroup GPIOEx_Get_Port_Index GPIO Get Port Index
1042 * @{
1043 */
1044#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
1045#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\
1046 ((__GPIOx__) == (GPIOB))? 1U :\
1047 ((__GPIOx__) == (GPIOC))? 2U :\
1048 ((__GPIOx__) == (GPIOD))? 3U :\
1049 ((__GPIOx__) == (GPIOE))? 4U :\
1050 ((__GPIOx__) == (GPIOF))? 5U :\
1051 ((__GPIOx__) == (GPIOG))? 6U :\
1052 ((__GPIOx__) == (GPIOH))? 7U :\
1053 ((__GPIOx__) == (GPIOI))? 8U : 9U)
1054#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
1055
1056#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
1057 defined(STM32F469xx) || defined(STM32F479xx)
1058#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\
1059 ((__GPIOx__) == (GPIOB))? 1U :\
1060 ((__GPIOx__) == (GPIOC))? 2U :\
1061 ((__GPIOx__) == (GPIOD))? 3U :\
1062 ((__GPIOx__) == (GPIOE))? 4U :\
1063 ((__GPIOx__) == (GPIOF))? 5U :\
1064 ((__GPIOx__) == (GPIOG))? 6U :\
1065 ((__GPIOx__) == (GPIOH))? 7U :\
1066 ((__GPIOx__) == (GPIOI))? 8U :\
1067 ((__GPIOx__) == (GPIOJ))? 9U : 10U)
1068#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
1069
1070#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
1071#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\
1072 ((__GPIOx__) == (GPIOB))? 1U :\
1073 ((__GPIOx__) == (GPIOC))? 2U :\
1074 ((__GPIOx__) == (GPIOH))? 7U : 8U)
1075#endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */
1076
1077#if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
1078#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\
1079 ((__GPIOx__) == (GPIOB))? 1U :\
1080 ((__GPIOx__) == (GPIOC))? 2U :\
1081 ((__GPIOx__) == (GPIOD))? 3U :\
1082 ((__GPIOx__) == (GPIOE))? 4U : 5U)
1083#endif /* STM32F401xC || STM32F401xE || STM32F411xE */
1084
1085#if defined(STM32F446xx)
1086#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\
1087 ((__GPIOx__) == (GPIOB))? 1U :\
1088 ((__GPIOx__) == (GPIOC))? 2U :\
1089 ((__GPIOx__) == (GPIOD))? 3U :\
1090 ((__GPIOx__) == (GPIOE))? 4U :\
1091 ((__GPIOx__) == (GPIOF))? 5U :\
1092 ((__GPIOx__) == (GPIOG))? 6U : 8U)
1093#endif /* STM32F446xx */
1094
1095/**
1096 * @}
1097 */
1098
1099/** @defgroup GPIOEx_IS_Alternat_function_selection GPIO Check Alternate Function
1100 * @{
1101 */
1102/*------------------------- STM32F429xx/STM32F439xx---------------------------*/
1103#if defined(STM32F429xx) || defined(STM32F439xx)
1104#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1105 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1106 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1107 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1108 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1109 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1110 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1111 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1112 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1113 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1114 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1115 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1116 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1117 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1118 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1119 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \
1120 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \
1121 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \
1122 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \
1123 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \
1124 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \
1125 ((AF) == GPIO_AF14_LTDC))
1126
1127#endif /* STM32F429xx || STM32F439xx */
1128/*----------------------------------------------------------------------------*/
1129
1130/*---------------------------------- STM32F427xx/STM32F437xx------------------*/
1131#if defined(STM32F427xx) || defined(STM32F437xx)
1132#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1133 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1134 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1135 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1136 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1137 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1138 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1139 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1140 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1141 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1142 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1143 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1144 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1145 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1146 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1147 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \
1148 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \
1149 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \
1150 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \
1151 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \
1152 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1))
1153
1154#endif /* STM32F427xx || STM32F437xx */
1155/*----------------------------------------------------------------------------*/
1156
1157/*---------------------------------- STM32F407xx/STM32F417xx------------------*/
1158#if defined(STM32F407xx) || defined(STM32F417xx)
1159#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1160 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1161 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1162 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1163 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1164 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1165 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1166 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1167 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1168 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1169 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1170 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1171 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1172 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1173 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1174 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \
1175 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \
1176 ((AF) == GPIO_AF12_FSMC) || ((AF) == GPIO_AF15_EVENTOUT))
1177
1178#endif /* STM32F407xx || STM32F417xx */
1179/*----------------------------------------------------------------------------*/
1180
1181/*---------------------------------- STM32F405xx/STM32F415xx------------------*/
1182#if defined(STM32F405xx) || defined(STM32F415xx)
1183#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1184 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1185 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1186 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1187 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1188 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1189 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1190 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1191 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1192 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1193 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1194 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1195 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1196 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1197 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1198 ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDIO) || \
1199 ((AF) == GPIO_AF12_FSMC) || ((AF) == GPIO_AF15_EVENTOUT))
1200
1201#endif /* STM32F405xx || STM32F415xx */
1202
1203/*----------------------------------------------------------------------------*/
1204
1205/*---------------------------------------- STM32F401xx------------------------*/
1206#if defined(STM32F401xC) || defined(STM32F401xE)
1207#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1208 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1209 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1210 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1211 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1212 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF4_I2C1) || \
1213 ((AF) == GPIO_AF4_I2C2) || ((AF) == GPIO_AF4_I2C3) || \
1214 ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \
1215 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF5_SPI4) || \
1216 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1217 ((AF) == GPIO_AF8_USART6) || ((AF) == GPIO_AF10_OTG_FS) || \
1218 ((AF) == GPIO_AF9_I2C2) || ((AF) == GPIO_AF9_I2C3) || \
1219 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF15_EVENTOUT))
1220
1221#endif /* STM32F401xC || STM32F401xE */
1222/*----------------------------------------------------------------------------*/
1223/*---------------------------------------- STM32F410xx------------------------*/
1224#if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx)
1225#define IS_GPIO_AF(AF) (((AF) < 10) || ((AF) == 15))
1226#endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */
1227
1228/*---------------------------------------- STM32F411xx------------------------*/
1229#if defined(STM32F411xE)
1230#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1231 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1232 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1233 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1234 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1235 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF4_I2C1) || \
1236 ((AF) == GPIO_AF4_I2C2) || ((AF) == GPIO_AF4_I2C3) || \
1237 ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \
1238 ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF6_SPI4) || \
1239 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF5_SPI4) || \
1240 ((AF) == GPIO_AF6_SPI5) || ((AF) == GPIO_AF7_SPI3) || \
1241 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1242 ((AF) == GPIO_AF8_USART6) || ((AF) == GPIO_AF10_OTG_FS) || \
1243 ((AF) == GPIO_AF9_I2C2) || ((AF) == GPIO_AF9_I2C3) || \
1244 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF15_EVENTOUT))
1245
1246#endif /* STM32F411xE */
1247/*----------------------------------------------------------------------------*/
1248
1249/*----------------------------------------------- STM32F446xx ----------------*/
1250#if defined(STM32F446xx)
1251#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1252 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1253 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1254 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1255 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1256 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1257 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1258 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1259 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1260 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1261 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1262 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1263 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1264 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1265 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1266 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \
1267 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \
1268 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \
1269 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \
1270 ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \
1271 ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF6_SPI2) || \
1272 ((AF) == GPIO_AF6_SPI4) || ((AF) == GPIO_AF7_UART5) || \
1273 ((AF) == GPIO_AF7_SPI2) || ((AF) == GPIO_AF7_SPI3) || \
1274 ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \
1275 ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF9_QSPI) || \
1276 ((AF) == GPIO_AF10_SAI2) || ((AF) == GPIO_AF10_QSPI))
1277
1278#endif /* STM32F446xx */
1279/*----------------------------------------------------------------------------*/
1280
1281/*------------------------------------------- STM32F469xx/STM32F479xx --------*/
1282#if defined(STM32F469xx) || defined(STM32F479xx)
1283#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \
1284 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \
1285 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \
1286 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \
1287 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \
1288 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \
1289 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \
1290 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \
1291 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \
1292 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \
1293 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \
1294 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \
1295 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \
1296 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \
1297 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \
1298 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \
1299 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \
1300 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \
1301 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \
1302 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \
1303 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \
1304 ((AF) == GPIO_AF14_LTDC) || ((AF) == GPIO_AF13_DSI) || \
1305 ((AF) == GPIO_AF9_QSPI) || ((AF) == GPIO_AF10_QSPI))
1306
1307#endif /* STM32F469xx || STM32F479xx */
1308/*----------------------------------------------------------------------------*/
1309
1310/**
1311 * @}
1312 */
1313
1314/**
1315 * @}
1316 */
1317
1318/* Private functions ---------------------------------------------------------*/
1319/** @defgroup GPIOEx_Private_Functions GPIO Private Functions
1320 * @{
1321 */
1322
1323/**
1324 * @}
1325 */
1326
1327/**
1328 * @}
1329 */
1330
1331/**
1332 * @}
1333 */
1334
1335#ifdef __cplusplus
1336}
1337#endif
1338
1339#endif /* __STM32F4xx_HAL_GPIO_EX_H */
1340
1341/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Note: See TracBrowser for help on using the repository browser.