1 /** 2 ****************************************************************************** 3 * @file stm32f4xx_hal_gpio_ex.h 4 * @author MCD Application Team 5 * @brief Header file of GPIO HAL Extension module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2017 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef __STM32F4xx_HAL_GPIO_EX_H 21 #define __STM32F4xx_HAL_GPIO_EX_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32f4xx_hal_def.h" 29 30 /** @addtogroup STM32F4xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @defgroup GPIOEx GPIOEx 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /* Exported constants --------------------------------------------------------*/ 40 /** @defgroup GPIOEx_Exported_Constants GPIO Exported Constants 41 * @{ 42 */ 43 44 /** @defgroup GPIO_Alternate_function_selection GPIO Alternate Function Selection 45 * @{ 46 */ 47 48 /*------------------------------------------ STM32F429xx/STM32F439xx ---------*/ 49 #if defined(STM32F429xx) || defined(STM32F439xx) 50 /** 51 * @brief AF 0 selection 52 */ 53 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 54 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 55 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 56 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 57 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 58 59 /** 60 * @brief AF 1 selection 61 */ 62 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 63 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 64 65 /** 66 * @brief AF 2 selection 67 */ 68 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 69 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 70 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 71 72 /** 73 * @brief AF 3 selection 74 */ 75 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 76 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 77 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 78 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 79 80 /** 81 * @brief AF 4 selection 82 */ 83 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 84 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 85 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 86 87 /** 88 * @brief AF 5 selection 89 */ 90 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 91 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 92 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 93 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 94 #define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */ 95 #define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */ 96 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 97 98 /** 99 * @brief AF 6 selection 100 */ 101 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 102 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 103 #define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */ 104 105 /** 106 * @brief AF 7 selection 107 */ 108 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 109 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 110 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 111 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 112 113 /** 114 * @brief AF 8 selection 115 */ 116 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 117 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 118 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 119 #define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */ 120 #define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */ 121 122 /** 123 * @brief AF 9 selection 124 */ 125 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 126 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 127 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 128 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 129 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 130 #define GPIO_AF9_LTDC ((uint8_t)0x09) /* LCD-TFT Alternate Function mapping */ 131 132 /** 133 * @brief AF 10 selection 134 */ 135 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 136 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 137 138 /** 139 * @brief AF 11 selection 140 */ 141 #define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */ 142 143 /** 144 * @brief AF 12 selection 145 */ 146 #define GPIO_AF12_FMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 147 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 148 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 149 150 /** 151 * @brief AF 13 selection 152 */ 153 #define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */ 154 155 /** 156 * @brief AF 14 selection 157 */ 158 #define GPIO_AF14_LTDC ((uint8_t)0x0E) /* LCD-TFT Alternate Function mapping */ 159 160 /** 161 * @brief AF 15 selection 162 */ 163 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 164 #endif /* STM32F429xx || STM32F439xx */ 165 /*----------------------------------------------------------------------------*/ 166 167 /*---------------------------------- STM32F427xx/STM32F437xx------------------*/ 168 #if defined(STM32F427xx) || defined(STM32F437xx) 169 /** 170 * @brief AF 0 selection 171 */ 172 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 173 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 174 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 175 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 176 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 177 178 /** 179 * @brief AF 1 selection 180 */ 181 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 182 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 183 184 /** 185 * @brief AF 2 selection 186 */ 187 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 188 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 189 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 190 191 /** 192 * @brief AF 3 selection 193 */ 194 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 195 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 196 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 197 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 198 199 /** 200 * @brief AF 4 selection 201 */ 202 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 203 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 204 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 205 206 /** 207 * @brief AF 5 selection 208 */ 209 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 210 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 211 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 212 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 213 #define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */ 214 #define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */ 215 /** @brief GPIO_Legacy 216 */ 217 #define GPIO_AF5_I2S3ext GPIO_AF5_SPI3 /* I2S3ext_SD Alternate Function mapping */ 218 219 /** 220 * @brief AF 6 selection 221 */ 222 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 223 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 224 #define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */ 225 226 /** 227 * @brief AF 7 selection 228 */ 229 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 230 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 231 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 232 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 233 234 /** 235 * @brief AF 8 selection 236 */ 237 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 238 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 239 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 240 #define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */ 241 #define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */ 242 243 /** 244 * @brief AF 9 selection 245 */ 246 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 247 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 248 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 249 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 250 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 251 252 /** 253 * @brief AF 10 selection 254 */ 255 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 256 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 257 258 /** 259 * @brief AF 11 selection 260 */ 261 #define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */ 262 263 /** 264 * @brief AF 12 selection 265 */ 266 #define GPIO_AF12_FMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 267 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 268 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 269 270 /** 271 * @brief AF 13 selection 272 */ 273 #define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */ 274 275 /** 276 * @brief AF 15 selection 277 */ 278 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 279 #endif /* STM32F427xx || STM32F437xx */ 280 /*----------------------------------------------------------------------------*/ 281 282 /*---------------------------------- STM32F407xx/STM32F417xx------------------*/ 283 #if defined(STM32F407xx) || defined(STM32F417xx) 284 /** 285 * @brief AF 0 selection 286 */ 287 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 288 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 289 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 290 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 291 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 292 293 /** 294 * @brief AF 1 selection 295 */ 296 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 297 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 298 299 /** 300 * @brief AF 2 selection 301 */ 302 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 303 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 304 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 305 306 /** 307 * @brief AF 3 selection 308 */ 309 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 310 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 311 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 312 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 313 314 /** 315 * @brief AF 4 selection 316 */ 317 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 318 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 319 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 320 321 /** 322 * @brief AF 5 selection 323 */ 324 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 325 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 326 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 327 328 /** 329 * @brief AF 6 selection 330 */ 331 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 332 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 333 334 /** 335 * @brief AF 7 selection 336 */ 337 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 338 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 339 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 340 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 341 342 /** 343 * @brief AF 8 selection 344 */ 345 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 346 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 347 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 348 349 /** 350 * @brief AF 9 selection 351 */ 352 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 353 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 354 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 355 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 356 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 357 358 /** 359 * @brief AF 10 selection 360 */ 361 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 362 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 363 364 /** 365 * @brief AF 11 selection 366 */ 367 #define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */ 368 369 /** 370 * @brief AF 12 selection 371 */ 372 #define GPIO_AF12_FSMC ((uint8_t)0x0C) /* FSMC Alternate Function mapping */ 373 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 374 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 375 376 /** 377 * @brief AF 13 selection 378 */ 379 #define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */ 380 381 /** 382 * @brief AF 15 selection 383 */ 384 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 385 #endif /* STM32F407xx || STM32F417xx */ 386 /*----------------------------------------------------------------------------*/ 387 388 /*---------------------------------- STM32F405xx/STM32F415xx------------------*/ 389 #if defined(STM32F405xx) || defined(STM32F415xx) 390 /** 391 * @brief AF 0 selection 392 */ 393 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 394 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 395 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 396 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 397 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 398 399 /** 400 * @brief AF 1 selection 401 */ 402 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 403 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 404 405 /** 406 * @brief AF 2 selection 407 */ 408 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 409 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 410 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 411 412 /** 413 * @brief AF 3 selection 414 */ 415 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 416 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 417 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 418 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 419 420 /** 421 * @brief AF 4 selection 422 */ 423 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 424 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 425 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 426 427 /** 428 * @brief AF 5 selection 429 */ 430 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 431 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 432 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 433 434 /** 435 * @brief AF 6 selection 436 */ 437 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 438 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 439 440 /** 441 * @brief AF 7 selection 442 */ 443 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 444 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 445 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 446 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 447 448 /** 449 * @brief AF 8 selection 450 */ 451 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 452 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 453 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 454 455 /** 456 * @brief AF 9 selection 457 */ 458 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 459 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 460 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 461 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 462 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 463 464 /** 465 * @brief AF 10 selection 466 */ 467 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 468 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 469 470 /** 471 * @brief AF 12 selection 472 */ 473 #define GPIO_AF12_FSMC ((uint8_t)0x0C) /* FSMC Alternate Function mapping */ 474 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 475 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 476 477 /** 478 * @brief AF 15 selection 479 */ 480 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 481 #endif /* STM32F405xx || STM32F415xx */ 482 483 /*----------------------------------------------------------------------------*/ 484 485 /*---------------------------------------- STM32F401xx------------------------*/ 486 #if defined(STM32F401xC) || defined(STM32F401xE) 487 /** 488 * @brief AF 0 selection 489 */ 490 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 491 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 492 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 493 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 494 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 495 496 /** 497 * @brief AF 1 selection 498 */ 499 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 500 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 501 502 /** 503 * @brief AF 2 selection 504 */ 505 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 506 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 507 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 508 509 /** 510 * @brief AF 3 selection 511 */ 512 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 513 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 514 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 515 516 /** 517 * @brief AF 4 selection 518 */ 519 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 520 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 521 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 522 523 /** 524 * @brief AF 5 selection 525 */ 526 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 527 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 528 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3 Alternate Function mapping */ 529 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 530 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 531 532 /** 533 * @brief AF 6 selection 534 */ 535 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 536 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 537 538 /** 539 * @brief AF 7 selection 540 */ 541 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 542 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 543 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 544 545 /** 546 * @brief AF 8 selection 547 */ 548 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 549 550 /** 551 * @brief AF 9 selection 552 */ 553 #define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */ 554 #define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */ 555 556 557 /** 558 * @brief AF 10 selection 559 */ 560 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 561 562 /** 563 * @brief AF 12 selection 564 */ 565 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 566 567 /** 568 * @brief AF 15 selection 569 */ 570 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 571 #endif /* STM32F401xC || STM32F401xE */ 572 /*----------------------------------------------------------------------------*/ 573 574 /*--------------- STM32F412Zx/STM32F412Vx/STM32F412Rx/STM32F412Cx-------------*/ 575 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) 576 /** 577 * @brief AF 0 selection 578 */ 579 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 580 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 581 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 582 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 583 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 584 585 /** 586 * @brief AF 1 selection 587 */ 588 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 589 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 590 591 /** 592 * @brief AF 2 selection 593 */ 594 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 595 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 596 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 597 598 /** 599 * @brief AF 3 selection 600 */ 601 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 602 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 603 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 604 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 605 606 /** 607 * @brief AF 4 selection 608 */ 609 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 610 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 611 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 612 #define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */ 613 614 /** 615 * @brief AF 5 selection 616 */ 617 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */ 618 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 619 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 620 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4/I2S4 Alternate Function mapping */ 621 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 622 623 /** 624 * @brief AF 6 selection 625 */ 626 #define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */ 627 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 628 #define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4/I2S4 Alternate Function mapping */ 629 #define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */ 630 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 631 #define GPIO_AF6_DFSDM1 ((uint8_t)0x06) /* DFSDM1 Alternate Function mapping */ 632 /** 633 * @brief AF 7 selection 634 */ 635 #define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */ 636 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 637 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 638 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 639 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 640 641 /** 642 * @brief AF 8 selection 643 */ 644 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 645 #define GPIO_AF8_USART3 ((uint8_t)0x08) /* USART3 Alternate Function mapping */ 646 #define GPIO_AF8_DFSDM1 ((uint8_t)0x08) /* DFSDM1 Alternate Function mapping */ 647 #define GPIO_AF8_CAN1 ((uint8_t)0x08) /* CAN1 Alternate Function mapping */ 648 649 /** 650 * @brief AF 9 selection 651 */ 652 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 653 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 654 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 655 #define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */ 656 #define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */ 657 #define GPIO_AF9_FMPI2C1 ((uint8_t)0x09) /* FMPI2C1 Alternate Function mapping */ 658 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 659 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 660 #define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */ 661 662 /** 663 * @brief AF 10 selection 664 */ 665 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 666 #define GPIO_AF10_DFSDM1 ((uint8_t)0x0A) /* DFSDM1 Alternate Function mapping */ 667 #define GPIO_AF10_QSPI ((uint8_t)0x0A) /* QSPI Alternate Function mapping */ 668 #define GPIO_AF10_FMC ((uint8_t)0x0A) /* FMC Alternate Function mapping */ 669 670 /** 671 * @brief AF 12 selection 672 */ 673 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 674 #define GPIO_AF12_FSMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 675 676 /** 677 * @brief AF 15 selection 678 */ 679 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 680 #endif /* STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */ 681 682 /*----------------------------------------------------------------------------*/ 683 684 /*--------------- STM32F413xx/STM32F423xx-------------------------------------*/ 685 #if defined(STM32F413xx) || defined(STM32F423xx) 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_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 692 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 693 694 /** 695 * @brief AF 1 selection 696 */ 697 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 698 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 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_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 705 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 706 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 707 708 /** 709 * @brief AF 3 selection 710 */ 711 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 712 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 713 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 714 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 715 #define GPIO_AF3_DFSDM2 ((uint8_t)0x03) /* DFSDM2 Alternate Function mapping */ 716 717 /** 718 * @brief AF 4 selection 719 */ 720 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 721 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 722 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 723 #define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */ 724 725 /** 726 * @brief AF 5 selection 727 */ 728 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */ 729 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 730 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 731 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4/I2S4 Alternate Function mapping */ 732 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 733 734 /** 735 * @brief AF 6 selection 736 */ 737 #define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */ 738 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 739 #define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4/I2S4 Alternate Function mapping */ 740 #define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */ 741 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 742 #define GPIO_AF6_DFSDM1 ((uint8_t)0x06) /* DFSDM1 Alternate Function mapping */ 743 #define GPIO_AF6_DFSDM2 ((uint8_t)0x06) /* DFSDM2 Alternate Function mapping */ 744 /** 745 * @brief AF 7 selection 746 */ 747 #define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */ 748 #define GPIO_AF7_SAI1 ((uint8_t)0x07) /* SAI1 Alternate Function mapping */ 749 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 750 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 751 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 752 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 753 #define GPIO_AF7_DFSDM2 ((uint8_t)0x07) /* DFSDM2 Alternate Function mapping */ 754 755 /** 756 * @brief AF 8 selection 757 */ 758 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 759 #define GPIO_AF8_USART3 ((uint8_t)0x08) /* USART3 Alternate Function mapping */ 760 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 761 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 762 #define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART8 Alternate Function mapping */ 763 #define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */ 764 #define GPIO_AF8_DFSDM1 ((uint8_t)0x08) /* DFSDM1 Alternate Function mapping */ 765 #define GPIO_AF8_CAN1 ((uint8_t)0x08) /* CAN1 Alternate Function mapping */ 766 767 /** 768 * @brief AF 9 selection 769 */ 770 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 771 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 772 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 773 #define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */ 774 #define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */ 775 #define GPIO_AF9_FMPI2C1 ((uint8_t)0x09) /* FMPI2C1 Alternate Function mapping */ 776 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 777 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 778 #define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */ 779 780 /** 781 * @brief AF 10 selection 782 */ 783 #define GPIO_AF10_SAI1 ((uint8_t)0x0A) /* SAI1 Alternate Function mapping */ 784 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 785 #define GPIO_AF10_DFSDM1 ((uint8_t)0x0A) /* DFSDM1 Alternate Function mapping */ 786 #define GPIO_AF10_DFSDM2 ((uint8_t)0x0A) /* DFSDM2 Alternate Function mapping */ 787 #define GPIO_AF10_QSPI ((uint8_t)0x0A) /* QSPI Alternate Function mapping */ 788 #define GPIO_AF10_FSMC ((uint8_t)0x0A) /* FSMC Alternate Function mapping */ 789 790 /** 791 * @brief AF 11 selection 792 */ 793 #define GPIO_AF11_UART4 ((uint8_t)0x0B) /* UART4 Alternate Function mapping */ 794 #define GPIO_AF11_UART5 ((uint8_t)0x0B) /* UART5 Alternate Function mapping */ 795 #define GPIO_AF11_UART9 ((uint8_t)0x0B) /* UART9 Alternate Function mapping */ 796 #define GPIO_AF11_UART10 ((uint8_t)0x0B) /* UART10 Alternate Function mapping */ 797 #define GPIO_AF11_CAN3 ((uint8_t)0x0B) /* CAN3 Alternate Function mapping */ 798 799 /** 800 * @brief AF 12 selection 801 */ 802 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 803 #define GPIO_AF12_FSMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 804 805 /** 806 * @brief AF 14 selection 807 */ 808 #define GPIO_AF14_RNG ((uint8_t)0x0E) /* RNG Alternate Function mapping */ 809 810 /** 811 * @brief AF 15 selection 812 */ 813 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 814 #endif /* STM32F413xx || STM32F423xx */ 815 816 /*---------------------------------------- STM32F411xx------------------------*/ 817 #if defined(STM32F411xE) 818 /** 819 * @brief AF 0 selection 820 */ 821 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 822 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 823 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 824 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 825 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 826 827 /** 828 * @brief AF 1 selection 829 */ 830 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 831 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 832 833 /** 834 * @brief AF 2 selection 835 */ 836 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 837 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 838 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 839 840 /** 841 * @brief AF 3 selection 842 */ 843 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 844 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 845 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 846 847 /** 848 * @brief AF 4 selection 849 */ 850 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 851 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 852 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 853 854 /** 855 * @brief AF 5 selection 856 */ 857 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */ 858 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 859 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 860 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 861 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 862 863 /** 864 * @brief AF 6 selection 865 */ 866 #define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */ 867 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 868 #define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4/I2S4 Alternate Function mapping */ 869 #define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */ 870 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 871 872 /** 873 * @brief AF 7 selection 874 */ 875 #define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */ 876 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 877 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 878 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 879 880 /** 881 * @brief AF 8 selection 882 */ 883 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 884 885 /** 886 * @brief AF 9 selection 887 */ 888 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 889 #define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */ 890 #define GPIO_AF9_I2C3 ((uint8_t)0x09) /* I2C3 Alternate Function mapping */ 891 892 /** 893 * @brief AF 10 selection 894 */ 895 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 896 897 /** 898 * @brief AF 12 selection 899 */ 900 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 901 902 /** 903 * @brief AF 15 selection 904 */ 905 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 906 #endif /* STM32F411xE */ 907 908 /*---------------------------------------- STM32F410xx------------------------*/ 909 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) 910 /** 911 * @brief AF 0 selection 912 */ 913 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 914 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 915 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 916 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 917 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 918 919 /** 920 * @brief AF 1 selection 921 */ 922 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 923 #define GPIO_AF1_LPTIM1 ((uint8_t)0x01) /* LPTIM1 Alternate Function mapping */ 924 925 /** 926 * @brief AF 2 selection 927 */ 928 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 929 930 /** 931 * @brief AF 3 selection 932 */ 933 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 934 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 935 936 /** 937 * @brief AF 4 selection 938 */ 939 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 940 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 941 #define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */ 942 943 /** 944 * @brief AF 5 selection 945 */ 946 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */ 947 #if defined(STM32F410Cx) || defined(STM32F410Rx) 948 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 949 #endif /* STM32F410Cx || STM32F410Rx */ 950 951 /** 952 * @brief AF 6 selection 953 */ 954 #define GPIO_AF6_SPI1 ((uint8_t)0x06) /* SPI1 Alternate Function mapping */ 955 #if defined(STM32F410Cx) || defined(STM32F410Rx) 956 #define GPIO_AF6_SPI2 ((uint8_t)0x06) /* I2S2 Alternate Function mapping */ 957 #endif /* STM32F410Cx || STM32F410Rx */ 958 #define GPIO_AF6_SPI5 ((uint8_t)0x06) /* SPI5/I2S5 Alternate Function mapping */ 959 /** 960 * @brief AF 7 selection 961 */ 962 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 963 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 964 965 /** 966 * @brief AF 8 selection 967 */ 968 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 969 970 /** 971 * @brief AF 9 selection 972 */ 973 #define GPIO_AF9_I2C2 ((uint8_t)0x09) /* I2C2 Alternate Function mapping */ 974 #define GPIO_AF9_FMPI2C1 ((uint8_t)0x09) /* FMPI2C1 Alternate Function mapping */ 975 976 /** 977 * @brief AF 15 selection 978 */ 979 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 980 #endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */ 981 982 /*---------------------------------------- STM32F446xx -----------------------*/ 983 #if defined(STM32F446xx) 984 /** 985 * @brief AF 0 selection 986 */ 987 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 988 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 989 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 990 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 991 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 992 993 /** 994 * @brief AF 1 selection 995 */ 996 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 997 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 998 999 /** 1000 * @brief AF 2 selection 1001 */ 1002 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 1003 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 1004 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 1005 1006 /** 1007 * @brief AF 3 selection 1008 */ 1009 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 1010 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 1011 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 1012 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 1013 #define GPIO_AF3_CEC ((uint8_t)0x03) /* CEC Alternate Function mapping */ 1014 1015 /** 1016 * @brief AF 4 selection 1017 */ 1018 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 1019 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 1020 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 1021 #define GPIO_AF4_FMPI2C1 ((uint8_t)0x04) /* FMPI2C1 Alternate Function mapping */ 1022 #define GPIO_AF4_CEC ((uint8_t)0x04) /* CEC Alternate Function mapping */ 1023 1024 /** 1025 * @brief AF 5 selection 1026 */ 1027 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1/I2S1 Alternate Function mapping */ 1028 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 1029 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 1030 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 1031 1032 /** 1033 * @brief AF 6 selection 1034 */ 1035 #define GPIO_AF6_SPI2 ((uint8_t)0x06) /* SPI2/I2S2 Alternate Function mapping */ 1036 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 1037 #define GPIO_AF6_SPI4 ((uint8_t)0x06) /* SPI4 Alternate Function mapping */ 1038 #define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */ 1039 1040 /** 1041 * @brief AF 7 selection 1042 */ 1043 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 1044 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 1045 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 1046 #define GPIO_AF7_UART5 ((uint8_t)0x07) /* UART5 Alternate Function mapping */ 1047 #define GPIO_AF7_SPI2 ((uint8_t)0x07) /* SPI2/I2S2 Alternate Function mapping */ 1048 #define GPIO_AF7_SPI3 ((uint8_t)0x07) /* SPI3/I2S3 Alternate Function mapping */ 1049 #define GPIO_AF7_SPDIFRX ((uint8_t)0x07) /* SPDIFRX Alternate Function mapping */ 1050 1051 /** 1052 * @brief AF 8 selection 1053 */ 1054 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 1055 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 1056 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 1057 #define GPIO_AF8_SPDIFRX ((uint8_t)0x08) /* SPDIFRX Alternate Function mapping */ 1058 #define GPIO_AF8_SAI2 ((uint8_t)0x08) /* SAI2 Alternate Function mapping */ 1059 1060 /** 1061 * @brief AF 9 selection 1062 */ 1063 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 1064 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 1065 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 1066 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 1067 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 1068 #define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */ 1069 1070 /** 1071 * @brief AF 10 selection 1072 */ 1073 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 1074 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 1075 #define GPIO_AF10_SAI2 ((uint8_t)0x0A) /* SAI2 Alternate Function mapping */ 1076 #define GPIO_AF10_QSPI ((uint8_t)0x0A) /* QSPI Alternate Function mapping */ 1077 1078 /** 1079 * @brief AF 11 selection 1080 */ 1081 #define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */ 1082 1083 /** 1084 * @brief AF 12 selection 1085 */ 1086 #define GPIO_AF12_FMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 1087 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 1088 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 1089 1090 /** 1091 * @brief AF 13 selection 1092 */ 1093 #define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */ 1094 1095 /** 1096 * @brief AF 15 selection 1097 */ 1098 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 1099 1100 #endif /* STM32F446xx */ 1101 /*----------------------------------------------------------------------------*/ 1102 1103 /*-------------------------------- STM32F469xx/STM32F479xx--------------------*/ 1104 #if defined(STM32F469xx) || defined(STM32F479xx) 1105 /** 1106 * @brief AF 0 selection 1107 */ 1108 #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /* RTC_50Hz Alternate Function mapping */ 1109 #define GPIO_AF0_MCO ((uint8_t)0x00) /* MCO (MCO1 and MCO2) Alternate Function mapping */ 1110 #define GPIO_AF0_TAMPER ((uint8_t)0x00) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */ 1111 #define GPIO_AF0_SWJ ((uint8_t)0x00) /* SWJ (SWD and JTAG) Alternate Function mapping */ 1112 #define GPIO_AF0_TRACE ((uint8_t)0x00) /* TRACE Alternate Function mapping */ 1113 1114 /** 1115 * @brief AF 1 selection 1116 */ 1117 #define GPIO_AF1_TIM1 ((uint8_t)0x01) /* TIM1 Alternate Function mapping */ 1118 #define GPIO_AF1_TIM2 ((uint8_t)0x01) /* TIM2 Alternate Function mapping */ 1119 1120 /** 1121 * @brief AF 2 selection 1122 */ 1123 #define GPIO_AF2_TIM3 ((uint8_t)0x02) /* TIM3 Alternate Function mapping */ 1124 #define GPIO_AF2_TIM4 ((uint8_t)0x02) /* TIM4 Alternate Function mapping */ 1125 #define GPIO_AF2_TIM5 ((uint8_t)0x02) /* TIM5 Alternate Function mapping */ 1126 1127 /** 1128 * @brief AF 3 selection 1129 */ 1130 #define GPIO_AF3_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */ 1131 #define GPIO_AF3_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */ 1132 #define GPIO_AF3_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */ 1133 #define GPIO_AF3_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */ 1134 1135 /** 1136 * @brief AF 4 selection 1137 */ 1138 #define GPIO_AF4_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */ 1139 #define GPIO_AF4_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */ 1140 #define GPIO_AF4_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */ 1141 1142 /** 1143 * @brief AF 5 selection 1144 */ 1145 #define GPIO_AF5_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */ 1146 #define GPIO_AF5_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */ 1147 #define GPIO_AF5_SPI3 ((uint8_t)0x05) /* SPI3/I2S3 Alternate Function mapping */ 1148 #define GPIO_AF5_SPI4 ((uint8_t)0x05) /* SPI4 Alternate Function mapping */ 1149 #define GPIO_AF5_SPI5 ((uint8_t)0x05) /* SPI5 Alternate Function mapping */ 1150 #define GPIO_AF5_SPI6 ((uint8_t)0x05) /* SPI6 Alternate Function mapping */ 1151 #define GPIO_AF5_I2S3ext ((uint8_t)0x05) /* I2S3ext_SD Alternate Function mapping */ 1152 1153 /** 1154 * @brief AF 6 selection 1155 */ 1156 #define GPIO_AF6_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */ 1157 #define GPIO_AF6_I2S2ext ((uint8_t)0x06) /* I2S2ext_SD Alternate Function mapping */ 1158 #define GPIO_AF6_SAI1 ((uint8_t)0x06) /* SAI1 Alternate Function mapping */ 1159 1160 /** 1161 * @brief AF 7 selection 1162 */ 1163 #define GPIO_AF7_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ 1164 #define GPIO_AF7_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ 1165 #define GPIO_AF7_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ 1166 #define GPIO_AF7_I2S3ext ((uint8_t)0x07) /* I2S3ext_SD Alternate Function mapping */ 1167 1168 /** 1169 * @brief AF 8 selection 1170 */ 1171 #define GPIO_AF8_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */ 1172 #define GPIO_AF8_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */ 1173 #define GPIO_AF8_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */ 1174 #define GPIO_AF8_UART7 ((uint8_t)0x08) /* UART7 Alternate Function mapping */ 1175 #define GPIO_AF8_UART8 ((uint8_t)0x08) /* UART8 Alternate Function mapping */ 1176 1177 /** 1178 * @brief AF 9 selection 1179 */ 1180 #define GPIO_AF9_CAN1 ((uint8_t)0x09) /* CAN1 Alternate Function mapping */ 1181 #define GPIO_AF9_CAN2 ((uint8_t)0x09) /* CAN2 Alternate Function mapping */ 1182 #define GPIO_AF9_TIM12 ((uint8_t)0x09) /* TIM12 Alternate Function mapping */ 1183 #define GPIO_AF9_TIM13 ((uint8_t)0x09) /* TIM13 Alternate Function mapping */ 1184 #define GPIO_AF9_TIM14 ((uint8_t)0x09) /* TIM14 Alternate Function mapping */ 1185 #define GPIO_AF9_LTDC ((uint8_t)0x09) /* LCD-TFT Alternate Function mapping */ 1186 #define GPIO_AF9_QSPI ((uint8_t)0x09) /* QSPI Alternate Function mapping */ 1187 1188 /** 1189 * @brief AF 10 selection 1190 */ 1191 #define GPIO_AF10_OTG_FS ((uint8_t)0x0A) /* OTG_FS Alternate Function mapping */ 1192 #define GPIO_AF10_OTG_HS ((uint8_t)0x0A) /* OTG_HS Alternate Function mapping */ 1193 #define GPIO_AF10_QSPI ((uint8_t)0x0A) /* QSPI Alternate Function mapping */ 1194 1195 /** 1196 * @brief AF 11 selection 1197 */ 1198 #define GPIO_AF11_ETH ((uint8_t)0x0B) /* ETHERNET Alternate Function mapping */ 1199 1200 /** 1201 * @brief AF 12 selection 1202 */ 1203 #define GPIO_AF12_FMC ((uint8_t)0x0C) /* FMC Alternate Function mapping */ 1204 #define GPIO_AF12_OTG_HS_FS ((uint8_t)0x0C) /* OTG HS configured in FS, Alternate Function mapping */ 1205 #define GPIO_AF12_SDIO ((uint8_t)0x0C) /* SDIO Alternate Function mapping */ 1206 1207 /** 1208 * @brief AF 13 selection 1209 */ 1210 #define GPIO_AF13_DCMI ((uint8_t)0x0D) /* DCMI Alternate Function mapping */ 1211 #define GPIO_AF13_DSI ((uint8_t)0x0D) /* DSI Alternate Function mapping */ 1212 1213 /** 1214 * @brief AF 14 selection 1215 */ 1216 #define GPIO_AF14_LTDC ((uint8_t)0x0E) /* LCD-TFT Alternate Function mapping */ 1217 1218 /** 1219 * @brief AF 15 selection 1220 */ 1221 #define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /* EVENTOUT Alternate Function mapping */ 1222 1223 #endif /* STM32F469xx || STM32F479xx */ 1224 /*----------------------------------------------------------------------------*/ 1225 /** 1226 * @} 1227 */ 1228 1229 /** 1230 * @} 1231 */ 1232 1233 /* Exported macro ------------------------------------------------------------*/ 1234 /** @defgroup GPIOEx_Exported_Macros GPIO Exported Macros 1235 * @{ 1236 */ 1237 /** 1238 * @} 1239 */ 1240 1241 /* Exported functions --------------------------------------------------------*/ 1242 /** @defgroup GPIOEx_Exported_Functions GPIO Exported Functions 1243 * @{ 1244 */ 1245 /** 1246 * @} 1247 */ 1248 1249 /* Private types -------------------------------------------------------------*/ 1250 /* Private variables ---------------------------------------------------------*/ 1251 /* Private constants ---------------------------------------------------------*/ 1252 /** @defgroup GPIOEx_Private_Constants GPIO Private Constants 1253 * @{ 1254 */ 1255 /** 1256 * @} 1257 */ 1258 1259 /* Private macros ------------------------------------------------------------*/ 1260 /** @defgroup GPIOEx_Private_Macros GPIO Private Macros 1261 * @{ 1262 */ 1263 /** @defgroup GPIOEx_Get_Port_Index GPIO Get Port Index 1264 * @{ 1265 */ 1266 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) 1267 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1268 ((__GPIOx__) == (GPIOB))? 1U :\ 1269 ((__GPIOx__) == (GPIOC))? 2U :\ 1270 ((__GPIOx__) == (GPIOD))? 3U :\ 1271 ((__GPIOx__) == (GPIOE))? 4U :\ 1272 ((__GPIOx__) == (GPIOF))? 5U :\ 1273 ((__GPIOx__) == (GPIOG))? 6U :\ 1274 ((__GPIOx__) == (GPIOH))? 7U : 8U) 1275 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */ 1276 1277 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\ 1278 defined(STM32F469xx) || defined(STM32F479xx) 1279 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1280 ((__GPIOx__) == (GPIOB))? 1U :\ 1281 ((__GPIOx__) == (GPIOC))? 2U :\ 1282 ((__GPIOx__) == (GPIOD))? 3U :\ 1283 ((__GPIOx__) == (GPIOE))? 4U :\ 1284 ((__GPIOx__) == (GPIOF))? 5U :\ 1285 ((__GPIOx__) == (GPIOG))? 6U :\ 1286 ((__GPIOx__) == (GPIOH))? 7U :\ 1287 ((__GPIOx__) == (GPIOI))? 8U :\ 1288 ((__GPIOx__) == (GPIOJ))? 9U : 10U) 1289 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ 1290 1291 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) 1292 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1293 ((__GPIOx__) == (GPIOB))? 1U :\ 1294 ((__GPIOx__) == (GPIOC))? 2U : 7U) 1295 #endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */ 1296 1297 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) 1298 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1299 ((__GPIOx__) == (GPIOB))? 1U :\ 1300 ((__GPIOx__) == (GPIOC))? 2U :\ 1301 ((__GPIOx__) == (GPIOD))? 3U :\ 1302 ((__GPIOx__) == (GPIOE))? 4U : 7U) 1303 #endif /* STM32F401xC || STM32F401xE || STM32F411xE */ 1304 1305 #if defined(STM32F446xx) || defined(STM32F412Zx) || defined(STM32F413xx) || defined(STM32F423xx) 1306 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1307 ((__GPIOx__) == (GPIOB))? 1U :\ 1308 ((__GPIOx__) == (GPIOC))? 2U :\ 1309 ((__GPIOx__) == (GPIOD))? 3U :\ 1310 ((__GPIOx__) == (GPIOE))? 4U :\ 1311 ((__GPIOx__) == (GPIOF))? 5U :\ 1312 ((__GPIOx__) == (GPIOG))? 6U : 7U) 1313 #endif /* STM32F446xx || STM32F412Zx || STM32F413xx || STM32F423xx */ 1314 #if defined(STM32F412Vx) 1315 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1316 ((__GPIOx__) == (GPIOB))? 1U :\ 1317 ((__GPIOx__) == (GPIOC))? 2U :\ 1318 ((__GPIOx__) == (GPIOD))? 3U :\ 1319 ((__GPIOx__) == (GPIOE))? 4U : 7U) 1320 #endif /* STM32F412Vx */ 1321 #if defined(STM32F412Rx) 1322 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1323 ((__GPIOx__) == (GPIOB))? 1U :\ 1324 ((__GPIOx__) == (GPIOC))? 2U :\ 1325 ((__GPIOx__) == (GPIOD))? 3U : 7U) 1326 #endif /* STM32F412Rx */ 1327 #if defined(STM32F412Cx) 1328 #define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ 1329 ((__GPIOx__) == (GPIOB))? 1U :\ 1330 ((__GPIOx__) == (GPIOC))? 2U : 7U) 1331 #endif /* STM32F412Cx */ 1332 1333 /** 1334 * @} 1335 */ 1336 1337 /** @defgroup GPIOEx_IS_Alternat_function_selection GPIO Check Alternate Function 1338 * @{ 1339 */ 1340 /*------------------------- STM32F429xx/STM32F439xx---------------------------*/ 1341 #if defined(STM32F429xx) || defined(STM32F439xx) 1342 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1343 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1344 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1345 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1346 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1347 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1348 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1349 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1350 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1351 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1352 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1353 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1354 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1355 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1356 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1357 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ 1358 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \ 1359 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \ 1360 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ 1361 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ 1362 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \ 1363 ((AF) == GPIO_AF14_LTDC)) 1364 1365 #endif /* STM32F429xx || STM32F439xx */ 1366 /*----------------------------------------------------------------------------*/ 1367 1368 /*---------------------------------- STM32F427xx/STM32F437xx------------------*/ 1369 #if defined(STM32F427xx) || defined(STM32F437xx) 1370 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1371 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1372 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1373 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1374 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1375 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1376 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1377 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1378 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1379 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1380 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1381 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1382 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1383 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1384 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1385 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ 1386 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \ 1387 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \ 1388 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ 1389 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ 1390 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1)) 1391 1392 #endif /* STM32F427xx || STM32F437xx */ 1393 /*----------------------------------------------------------------------------*/ 1394 1395 /*---------------------------------- STM32F407xx/STM32F417xx------------------*/ 1396 #if defined(STM32F407xx) || defined(STM32F417xx) 1397 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1398 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1399 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1400 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1401 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1402 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1403 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1404 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1405 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1406 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1407 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1408 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1409 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1410 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1411 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1412 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ 1413 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \ 1414 ((AF) == GPIO_AF12_FSMC) || ((AF) == GPIO_AF15_EVENTOUT)) 1415 1416 #endif /* STM32F407xx || STM32F417xx */ 1417 /*----------------------------------------------------------------------------*/ 1418 1419 /*---------------------------------- STM32F405xx/STM32F415xx------------------*/ 1420 #if defined(STM32F405xx) || defined(STM32F415xx) 1421 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1422 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1423 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1424 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1425 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1426 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1427 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1428 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1429 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1430 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1431 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1432 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1433 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1434 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1435 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1436 ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDIO) || \ 1437 ((AF) == GPIO_AF12_FSMC) || ((AF) == GPIO_AF15_EVENTOUT)) 1438 1439 #endif /* STM32F405xx || STM32F415xx */ 1440 1441 /*----------------------------------------------------------------------------*/ 1442 1443 /*---------------------------------------- STM32F401xx------------------------*/ 1444 #if defined(STM32F401xC) || defined(STM32F401xE) 1445 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF12_SDIO) || \ 1446 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1447 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1448 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1449 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1450 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM9) || \ 1451 ((AF) == GPIO_AF3_TIM10) || ((AF) == GPIO_AF3_TIM11) || \ 1452 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1453 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1454 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF5_SPI4) || \ 1455 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF7_USART1) || \ 1456 ((AF) == GPIO_AF7_USART2) || ((AF) == GPIO_AF8_USART6) || \ 1457 ((AF) == GPIO_AF9_I2C2) || ((AF) == GPIO_AF9_I2C3) || \ 1458 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF15_EVENTOUT)) 1459 #endif /* STM32F401xC || STM32F401xE */ 1460 /*----------------------------------------------------------------------------*/ 1461 /*---------------------------------------- STM32F410xx------------------------*/ 1462 #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) 1463 #define IS_GPIO_AF(AF) (((AF) < 10U) || ((AF) == 15U)) 1464 #endif /* STM32F410Tx || STM32F410Cx || STM32F410Rx */ 1465 1466 /*---------------------------------------- STM32F411xx------------------------*/ 1467 #if defined(STM32F411xE) 1468 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1469 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1470 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1471 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1472 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1473 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF4_I2C1) || \ 1474 ((AF) == GPIO_AF4_I2C2) || ((AF) == GPIO_AF4_I2C3) || \ 1475 ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ 1476 ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF6_SPI4) || \ 1477 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ 1478 ((AF) == GPIO_AF6_SPI5) || ((AF) == GPIO_AF7_SPI3) || \ 1479 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1480 ((AF) == GPIO_AF8_USART6) || ((AF) == GPIO_AF10_OTG_FS) || \ 1481 ((AF) == GPIO_AF9_I2C2) || ((AF) == GPIO_AF9_I2C3) || \ 1482 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF15_EVENTOUT)) 1483 1484 #endif /* STM32F411xE */ 1485 /*----------------------------------------------------------------------------*/ 1486 1487 /*----------------------------------------------- STM32F446xx ----------------*/ 1488 #if defined(STM32F446xx) 1489 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1490 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1491 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1492 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1493 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1494 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1495 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1496 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1497 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1498 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1499 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1500 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1501 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1502 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1503 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1504 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ 1505 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \ 1506 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \ 1507 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \ 1508 ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ 1509 ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF6_SPI2) || \ 1510 ((AF) == GPIO_AF6_SPI4) || ((AF) == GPIO_AF7_UART5) || \ 1511 ((AF) == GPIO_AF7_SPI2) || ((AF) == GPIO_AF7_SPI3) || \ 1512 ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ 1513 ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF9_QSPI) || \ 1514 ((AF) == GPIO_AF10_SAI2) || ((AF) == GPIO_AF10_QSPI)) 1515 1516 #endif /* STM32F446xx */ 1517 /*----------------------------------------------------------------------------*/ 1518 1519 /*------------------------------------------- STM32F469xx/STM32F479xx --------*/ 1520 #if defined(STM32F469xx) || defined(STM32F479xx) 1521 #define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF9_TIM14) || \ 1522 ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF0_TAMPER) || \ 1523 ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ 1524 ((AF) == GPIO_AF1_TIM1) || ((AF) == GPIO_AF1_TIM2) || \ 1525 ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ 1526 ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ 1527 ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ 1528 ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ 1529 ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF9_TIM13) || \ 1530 ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF9_TIM12) || \ 1531 ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ 1532 ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF8_UART4) || \ 1533 ((AF) == GPIO_AF8_UART5) || ((AF) == GPIO_AF8_USART6) || \ 1534 ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ 1535 ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF10_OTG_HS) || \ 1536 ((AF) == GPIO_AF11_ETH) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ 1537 ((AF) == GPIO_AF12_SDIO) || ((AF) == GPIO_AF13_DCMI) || \ 1538 ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF5_SPI4) || \ 1539 ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ 1540 ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ 1541 ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF6_SAI1) || \ 1542 ((AF) == GPIO_AF14_LTDC) || ((AF) == GPIO_AF13_DSI) || \ 1543 ((AF) == GPIO_AF9_QSPI) || ((AF) == GPIO_AF10_QSPI)) 1544 1545 #endif /* STM32F469xx || STM32F479xx */ 1546 /*----------------------------------------------------------------------------*/ 1547 1548 /*------------------STM32F412Zx/STM32F412Vx/STM32F412Rx/STM32F412Cx-----------*/ 1549 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) 1550 #define IS_GPIO_AF(AF) (((AF) < 16U) && ((AF) != 11U) && ((AF) != 14U) && ((AF) != 13U)) 1551 #endif /* STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */ 1552 /*----------------------------------------------------------------------------*/ 1553 1554 /*------------------STM32F413xx/STM32F423xx-----------------------------------*/ 1555 #if defined(STM32F413xx) || defined(STM32F423xx) 1556 #define IS_GPIO_AF(AF) (((AF) < 16U) && ((AF) != 13U)) 1557 #endif /* STM32F413xx || STM32F423xx */ 1558 /*----------------------------------------------------------------------------*/ 1559 1560 /** 1561 * @} 1562 */ 1563 1564 /** 1565 * @} 1566 */ 1567 1568 /* Private functions ---------------------------------------------------------*/ 1569 /** @defgroup GPIOEx_Private_Functions GPIO Private Functions 1570 * @{ 1571 */ 1572 1573 /** 1574 * @} 1575 */ 1576 1577 /** 1578 * @} 1579 */ 1580 1581 /** 1582 * @} 1583 */ 1584 1585 #ifdef __cplusplus 1586 } 1587 #endif 1588 1589 #endif /* __STM32F4xx_HAL_GPIO_EX_H */ 1590 1591