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