1 /** 2 ****************************************************************************** 3 * @file stm32l0xx_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) 2016 STMicroelectronics</center></h2> 10 * 11 * Redistribution and use in source and binary forms, with or without modification, 12 * are permitted provided that the following conditions are met: 13 * 1. Redistributions of source code must retain the above copyright notice, 14 * this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright notice, 16 * this list of conditions and the following disclaimer in the documentation 17 * and/or other materials provided with the distribution. 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors 19 * may be used to endorse or promote products derived from this software 20 * without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 ****************************************************************************** 34 */ 35 36 /* Define to prevent recursive inclusion -------------------------------------*/ 37 #ifndef __STM32L0xx_HAL_GPIO_EX_H 38 #define __STM32L0xx_HAL_GPIO_EX_H 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 /* Includes ------------------------------------------------------------------*/ 45 #include "stm32l0xx_hal_def.h" 46 47 /** @addtogroup STM32L0xx_HAL_Driver 48 * @{ 49 */ 50 51 /** @defgroup GPIOEx GPIOEx 52 * @{ 53 */ 54 55 /* Exported types ------------------------------------------------------------*/ 56 57 /* Exported constants --------------------------------------------------------*/ 58 59 /** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants 60 * @{ 61 */ 62 63 64 /*----------------------------------------------------------------------------*/ 65 /*------------------------- STM32L083xx/STM32L073xx---------------------------*/ 66 /*----------------------------------------------------------------------------*/ 67 68 #if defined (STM32L083xx) || defined (STM32L073xx) 69 70 /* The table below gives an overview of the different alternate functions per port. 71 * For more details refer yourself to the product data sheet. 72 * 73 */ 74 75 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 76 *______________________________________________________________________________ 77 * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR |USART4 |COMP1 | 78 * PA1 |EVENTOUT|LCD |TIM2_C2 |TSC |USART2 |TIM21_TR|USART4 | | 79 * PA2 |TIM21_C1|LCD |TIM2_C3 |TSC |USART2 | |LPUART1 |COMP2 | 80 * PA3 |TIM21_C2|LCD |TIM2_C4 |TSC |USART2 | |LPUART1 | | 81 * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | 82 * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | 83 * PA6 |SPI1 |LCD |TIM3_C1 |TSC |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | 84 * PA7 |SPI1 |LCD |TIM3_C2 |TSC | |TIM22_C2|EVENTOUT|COMP2 | 85 * PA8 |MCO |LCD |USB |EVENTOUT|USART1 | | |I2C3 | 86 * PA9 |MCO |LCD | |TSC |USART1 | |I2C1 |I2C3 | 87 * PA10| |LCD | |TSC |USART1 | |I2C1 | | 88 * PA11|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP1 | 89 * PA12|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP2 | 90 * PA13|SWDIO | |USB | | | |LPUART1 | | 91 * PA14|SWCLK | | | |USART2 | |LPUART1 | | 92 * PA15|SPI1 |LCD |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | 93 *______________________________________________________________________________ 94 * PB0 |EVENTOUT|LCD |TIM3_C3 |TSC | | | | | 95 * PB1 | |LCD |TIM3_C4 |TSC |LPUART1 | | | | 96 * PB2 | | |LPTIM1_O|TSC | | | |I2C3 | 97 * PB3 |SPI1 |LCD |TIM2_C2 |TSC |EVENTOUT|USART1 |USART5 | | 98 * PB4 |SPI1 |LCD |TIM3_C1 |TSC |TIM22_C1|USART1 |USART5 |I2C3 | 99 * PB5 |SPI1 |LCD |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | 100 * | | | | |TIM22_C2| | | | 101 * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | 102 * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | |USART4 | | 103 * PB8 | |LCD | |TSC |I2C1 | | | | 104 * PB9 | |LCD |EVENTOUT| |I2C1 |SPI2 | | | 105 * PB10| |LCD |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 |LPUART1 | 106 * PB11|EVENTOUT|LCD |TIM2_C4 |TSC |LPUART1 | |I2C2 |LPUART1 | 107 * PB12|SPI2 |LCD |LPUART1 |TSC | |I2C2 |EVENTOUT| | 108 * PB13|SPI2 |LCD |MCO |TSC |LPUART1 |I2C2 |TIM21_C1| | 109 * PB14|SPI2 |LCD |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | 110 * PB15|SPI2 |LCD |RTC | | | | | | 111 *______________________________________________________________________________ 112 * PC0 |LPTIM1_I|LCD |EVENTOUT|TSC | | |LPUART1 |I2C3 | 113 * PC1 |LPTIM1_O|LCD |EVENTOUT|TSC | | |LPUART1 |I2C3 | 114 * PC2 |LPTIM1_I|LCD |SPI2 |TSC | | | | | 115 * PC3 |LPTIM1_T|LCD |SPI2 |TSC | | | | | 116 * PC4 |EVENTOUT|LCD |LPUART1 | | | | | | 117 * PC5 | |LCD |LPUART1 |TSC | | | | | 118 * PC6 |TIM22_C1|LCD |TIM3_C1 |TSC | | | | | 119 * PC7 |TIM22_C2|LCD |TIM3_C2 |TSC | | | | | 120 * PC8 |TIM22_TR|LCD |TIM3_C3 |TSC | | | | | 121 * PC9 |TIM21_TR|LCD |USB |TSC | | | |I2C3 | 122 * | | |TIM3_C4 | | | | | | 123 * PC10|LPUART1 |LCD | | | | |USART4 | | 124 * PC11|LPUART1 |LCD | | | | |USART4 | | 125 * PC12| |LCD |USART5 | | | |USART4 | | 126 * PC13| | | | | | | | | 127 * PC14| | | | | | | | | 128 * PC15| | | | | | | | | 129 *______________________________________________________________________________ 130 * PD0 |TIM21_C1|SPI2 | | | | | | | 131 * PD1 | |SPI2 | | | | | | | 132 * PD2 |LPUART1 |LCD |TIM3_TR | | | |USART5 | | 133 * PD3 |USART2 |LCD |SPI2 | | | | | | 134 * PD4 |USART2 |SPI2 | | | | | | | 135 * PD5 |USART2 | | | | | | | | 136 * PD6 |USART2 | | | | | | | | 137 * PD7 |USART2 |TIM21_C2| | | | | | | 138 * PD8 |LPUART1 |LCD | | | | | | | 139 * PD9 |LPUART1 |LCD | | | | | | | 140 * PD10| |LCD | | | | | | | 141 * PD11|LPUART1 |LCD | | | | | | | 142 * PD12|LPUART1 |LCD | | | | | | | 143 * PD13| |LCD | | | | | | | 144 * PD14| |LCD | | | | | | | 145 * PD15|USB |LCD | | | | | | | 146 *______________________________________________________________________________ 147 * PE0 | |LCD |EVENTOUT| | | | | | 148 * PE1 | |LCD |EVENTOUT| | | | | | 149 * PE2 | |LCD |TIM3_TR | | | | | | 150 * PE3 |TIM22_C1|LCD |TIM3_C1 | | | | | | 151 * PE4 |TIM22_C2| |TIM3_C2 | | | | | | 152 * PE5 |TIM21_C1| |TIM3_C3 | | | | | | 153 * PE6 |TIM21_C2| |TIM3_C4 | | | | | | 154 * PE7 | |LCD | | | | |USART5 | | 155 * PE8 | |LCD | | | | |USART4 | | 156 * PE9 |TIM2_C1 |LCD |TIM2_TR | | | |USART4 | | 157 * PE10|TIM2_C2 |LCD | | | | |USART5 | | 158 * PE11|TIM2_C3 | | | | | |USART5 | | 159 * PE12|TIM2_C4 | |SPI1 | | | | | | 160 * PE13| |LCD |SPI1 | | | | | | 161 * PE14| |LCD |SPI1 | | | | | | 162 * PE15| |LCD |SPI1 | | | | | | 163 *______________________________________________________________________________ 164 * PH0 |USB | | | | | | | | 165 * PH1 | | | | | | | | | 166 * PH9 | | | | | | | | | 167 * PH10| | | | | | | | | 168 * 169 */ 170 171 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 172 * @{ 173 */ 174 175 /* 176 * Alternate function AF0 177 */ 178 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 179 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 180 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 181 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 182 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 183 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 184 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 185 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 186 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 187 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 188 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 189 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 190 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 191 #define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 192 /** 193 * 194 */ 195 196 /* 197 * Alternate function AF1 198 */ 199 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 200 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 201 #define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ 202 #define GPIO_AF1_LCD ((uint8_t)0x01U) /* LCD Alternate Function mapping */ 203 /** 204 * 205 */ 206 207 /* 208 * Alternate function AF2 209 */ 210 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 211 #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ 212 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 213 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 214 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 215 #define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ 216 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 217 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 218 #define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ 219 #define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ 220 #define GPIO_AF2_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 221 /** 222 * 223 */ 224 225 /* 226 * Alternate function AF3 227 */ 228 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 229 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 230 #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ 231 /** 232 * 233 */ 234 235 /* 236 * Alternate function AF4 237 */ 238 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 239 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 240 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 241 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping*/ 242 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 243 #define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ 244 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 245 /** 246 * 247 */ 248 249 /* 250 * Alternate function AF5 251 */ 252 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 253 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 254 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 255 #define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ 256 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 257 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 258 /** 259 * 260 */ 261 262 /* 263 * Alternate function AF6 264 */ 265 266 #define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ 267 #define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ 268 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 269 #define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ 270 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 271 #define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ 272 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 273 /** 274 * 275 */ 276 277 /* 278 * Alternate function AF7 279 */ 280 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 281 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 282 #define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ 283 #define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ 284 /** 285 * 286 */ 287 288 /** 289 * @} 290 */ 291 292 /** 293 * @} 294 */ 295 296 /** @defgroup GPIOEx_Private GPIOEx Private 297 * @{ 298 */ 299 /** 300 * IS_GPIO_AF macro definition 301 */ 302 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF1_LCD) || \ 303 ((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF1_I2C1) || \ 304 ((__AF__) == GPIO_AF0_TIM21) || ((__AF__) == GPIO_AF1_SPI2) || \ 305 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF1_TIM21) || \ 306 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF2_TIM2) || \ 307 ((__AF__) == GPIO_AF0_SWCLK) || ((__AF__) == GPIO_AF2_TIM3) || \ 308 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF2_USB) || \ 309 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 310 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 311 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 312 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_MCO) || \ 313 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_RTC) || \ 314 ((__AF__) == GPIO_AF0_USB) || ((__AF__) == GPIO_AF2_SPI2) || \ 315 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_USART5) || \ 316 ((__AF__) == GPIO_AF3_TSC) || ((__AF__) == GPIO_AF2_SPI1) || \ 317 ((__AF__) == GPIO_AF3_EVENTOUT) || ((__AF__) == GPIO_AF4_USART2) || \ 318 ((__AF__) == GPIO_AF3_I2C1) || ((__AF__) == GPIO_AF4_LPUART1) || \ 319 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 320 ((__AF__) == GPIO_AF5_TIM2) || ((__AF__) == GPIO_AF4_USART1) || \ 321 ((__AF__) == GPIO_AF5_USART1) || ((__AF__) == GPIO_AF4_TIM22) || \ 322 ((__AF__) == GPIO_AF5_TIM22) || ((__AF__) == GPIO_AF4_TIM3) || \ 323 ((__AF__) == GPIO_AF5_SPI2) || ((__AF__) == GPIO_AF4_I2C1) || \ 324 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF6_USART4) || \ 325 ((__AF__) == GPIO_AF7_COMP2) || ((__AF__) == GPIO_AF6_LPUART1) || \ 326 ((__AF__) == GPIO_AF7_COMP1) || ((__AF__) == GPIO_AF6_I2C1) || \ 327 ((__AF__) == GPIO_AF7_I2C3) || ((__AF__) == GPIO_AF6_EVENTOUT) || \ 328 ((__AF__) == GPIO_AF7_LPUART1) || ((__AF__) == GPIO_AF6_I2C2) || \ 329 ((__AF__) == GPIO_AF6_USART5) || ((__AF__) == GPIO_AF6_TIM21)) 330 331 332 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 333 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 334 ((__AF__) == GPIO_AF1_LCD) || \ 335 ((__AF__) == GPIO_AF2_TIM2) || \ 336 ((__AF__) == GPIO_AF3_TSC) || \ 337 ((__AF__) == GPIO_AF4_USART2) || \ 338 ((__AF__) == GPIO_AF5_TIM22) || \ 339 ((__AF__) == GPIO_AF6_USART4) || \ 340 ((__AF__) == GPIO_AF7_I2C3))) || \ 341 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 342 ((__AF__) == GPIO_AF1_LCD) || \ 343 ((__AF__) == GPIO_AF2_TIM2) || \ 344 ((__AF__) == GPIO_AF3_TSC) || \ 345 ((__AF__) == GPIO_AF4_TIM3) || \ 346 ((__AF__) == GPIO_AF5_I2C2) || \ 347 ((__AF__) == GPIO_AF6_USART4) || \ 348 ((__AF__) == GPIO_AF7_LPUART1))) || \ 349 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_LPTIM1) || \ 350 ((__AF__) == GPIO_AF1_LCD) || \ 351 ((__AF__) == GPIO_AF2_TIM3) || \ 352 ((__AF__) == GPIO_AF3_TSC) || \ 353 ((__AF__) == GPIO_AF6_USART4) || \ 354 ((__AF__) == GPIO_AF7_I2C3))) || \ 355 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_LPUART1) || \ 356 ((__AF__) == GPIO_AF1_LCD) || \ 357 ((__AF__) == GPIO_AF2_TIM3) || \ 358 ((__AF__) == GPIO_AF6_USART5))) || \ 359 (((__INSTANCE__) == GPIOE) && (((__AF__) == GPIO_AF0_TIM22) || \ 360 ((__AF__) == GPIO_AF1_LCD) || \ 361 ((__AF__) == GPIO_AF2_TIM3) || \ 362 ((__AF__) == GPIO_AF6_USART4))) || \ 363 (((__INSTANCE__) == GPIOH) && (((__AF__) == GPIO_AF0_USB)))) 364 365 /** 366 * @} 367 */ 368 #endif /* (STM32L083xx) || (STM32L073xx) */ 369 370 /*----------------------------------------------------------------------------*/ 371 /*------------------------- STM32L082xx and STM32L072xx-----------------------*/ 372 /*----------------------------------------------------------------------------*/ 373 #if defined (STM32L082xx) || defined (STM32L072xx) 374 375 /* The table below gives an overview of the different alternate functions per port. 376 * For more details refer yourself to the product data sheet. 377 */ 378 379 380 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 381 *______________________________________________________________________________ 382 * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR |USART4 |COMP1 | 383 * PA1 |EVENTOUT| |TIM2_C2 |TSC |USART2 |TIM21_TR|USART4 | | 384 * PA2 |TIM21_C1| |TIM2_C3 |TSC |USART2 | |LPUART1 |COMP2 | 385 * PA3 |TIM21_C2| |TIM2_C4 |TSC |USART2 | |LPUART1 | | 386 * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | 387 * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | 388 * PA6 |SPI1 | |TIM3_C1 |TSC |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | 389 * PA7 |SPI1 | |TIM3_C2 |TSC | |TIM22_C2|EVENTOUT|COMP2 | 390 * PA8 |MCO | |USB |EVENTOUT|USART1 | | |I2C3 | 391 * PA9 |MCO | | |TSC |USART1 | |I2C1 |I2C3 | 392 * PA10| | | |TSC |USART1 | |I2C1 | | 393 * PA11|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP1 | 394 * PA12|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP2 | 395 * PA13|SWDIO | |USB | | | |LPUART1 | | 396 * PA14|SWCLK | | | |USART2 | |LPUART1 | | 397 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | 398 *______________________________________________________________________________ 399 * PB0 |EVENTOUT| |TIM3_C3 |TSC | | | | | 400 * PB1 | | |TIM3_C4 |TSC |LPUART1 | | | | 401 * PB2 | | |LPTIM1_O|TSC | | | |I2C3 | 402 * PB3 |SPI1 | |TIM2_C2 |TSC |EVENTOUT|USART1 |USART5 | | 403 * PB4 |SPI1 | |TIM3_C1 |TSC |TIM22_C1|USART1 |USART5 |I2C3 | 404 * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | 405 * | | | | |TIM22_C2| | | | 406 * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | 407 * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | |USART4 | | 408 * PB8 | | | |TSC |I2C1 | | | | 409 * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | 410 * PB10| | |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 |LPUART1 | 411 * PB11|EVENTOUT| |TIM2_C4 |TSC |LPUART1 | |I2C2 |LPUART1 | 412 * PB12|SPI2 | |LPUART1 |TSC | |I2C2 |EVENTOUT| | 413 * PB13|SPI2 | |MCO |TSC |LPUART1 |I2C2 |TIM21_C1| | 414 * PB14|SPI2 | |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | 415 * PB15|SPI2 | |RTC | | | | | | 416 *______________________________________________________________________________ 417 * PC0 |LPTIM1_I| |EVENTOUT|TSC | | |LPUART1 |I2C3 | 418 * PC1 |LPTIM1_O| |EVENTOUT|TSC | | |LPUART1 |I2C3 | 419 * PC2 |LPTIM1_I| |SPI2 |TSC | | | | | 420 * PC3 |LPTIM1_T| |SPI2 |TSC | | | | | 421 * PC4 |EVENTOUT| |LPUART1 | | | | | | 422 * PC5 | | |LPUART1 |TSC | | | | | 423 * PC6 |TIM22_C1| |TIM3_C1 |TSC | | | | | 424 * PC7 |TIM22_C2| |TIM3_C2 |TSC | | | | | 425 * PC8 |TIM22_TR| |TIM3_C3 |TSC | | | | | 426 * PC9 |TIM21_TR| |USB |TSC | | | |I2C3 | 427 * | | |TIM3_C4 | | | | | | 428 * PC10|LPUART1 | | | | | |USART4 | | 429 * PC11|LPUART1 | | | | | |USART4 | | 430 * PC12| | |USART5 | | | |USART4 | | 431 * PC13| | | | | | | | | 432 * PC14| | | | | | | | | 433 * PC15| | | | | | | | | 434 *______________________________________________________________________________ 435 * PD0 |TIM21_C1|SPI2 | | | | | | | 436 * PD1 | |SPI2 | | | | | | | 437 * PD2 |LPUART1 | |TIM3_TR | | | |USART5 | | 438 * PD3 |USART2 | |SPI2 | | | | | | 439 * PD4 |USART2 |SPI2 | | | | | | | 440 * PD5 |USART2 | | | | | | | | 441 * PD6 |USART2 | | | | | | | | 442 * PD7 |USART2 |TIM21_C2| | | | | | | 443 * PD8 |LPUART1 | | | | | | | | 444 * PD9 |LPUART1 | | | | | | | | 445 * PD10| | | | | | | | | 446 * PD11|LPUART1 | | | | | | | | 447 * PD12|LPUART1 | | | | | | | | 448 * PD13| | | | | | | | | 449 * PD14| | | | | | | | | 450 * PD15|USB | | | | | | | | 451 *______________________________________________________________________________ 452 * PE0 | | |EVENTOUT| | | | | | 453 * PE1 | | |EVENTOUT| | | | | | 454 * PE2 | | |TIM3_TR | | | | | | 455 * PE3 |TIM22_C1| |TIM3_C1 | | | | | | 456 * PE4 |TIM22_C2| |TIM3_C2 | | | | | | 457 * PE5 |TIM21_C1| |TIM3_C3 | | | | | | 458 * PE6 |TIM21_C2| |TIM3_C4 | | | | | | 459 * PE7 | | | | | | |USART5 | | 460 * PE8 | | | | | | |USART4 | | 461 * PE9 |TIM2_C1 | |TIM2_TR | | | |USART4 | | 462 * PE10|TIM2_C2 | | | | | |USART5 | | 463 * PE11|TIM2_C3 | | | | | |USART5 | | 464 * PE12|TIM2_C4 | |SPI1 | | | | | | 465 * PE13| | |SPI1 | | | | | | 466 * PE14| | |SPI1 | | | | | | 467 * PE15| | |SPI1 | | | | | | 468 *______________________________________________________________________________ 469 * PH0 |USB | | | | | | | | 470 * PH1 | | | | | | | | | 471 * PH9 | | | | | | | | | 472 * PH10| | | | | | | | | 473 * 474 */ 475 476 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 477 * @{ 478 */ 479 480 /* 481 * Alternate function AF0 482 */ 483 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 484 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 485 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 486 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 487 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 488 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 489 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 490 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 491 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 492 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 493 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 494 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 495 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 496 #define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 497 /** 498 * 499 */ 500 501 /* 502 * Alternate function AF1 503 */ 504 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 505 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 506 #define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ 507 /** 508 * 509 */ 510 511 /* 512 * Alternate function AF2 513 */ 514 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 515 #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ 516 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 517 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 518 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 519 #define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ 520 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 521 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 522 #define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ 523 #define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ 524 #define GPIO_AF2_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 525 /** 526 * 527 */ 528 529 /* 530 * Alternate function AF3 531 */ 532 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 533 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 534 #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ 535 /** 536 * 537 */ 538 539 /* 540 * Alternate function AF4 541 */ 542 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 543 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 544 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 545 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 546 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 547 #define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ 548 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 549 /** 550 * 551 */ 552 553 /* 554 * Alternate function AF5 555 */ 556 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 557 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 558 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 559 #define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ 560 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 561 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 562 /** 563 * 564 */ 565 566 /* 567 * Alternate function AF6 568 */ 569 #define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ 570 #define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ 571 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 572 #define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ 573 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 574 #define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ 575 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 576 /** 577 * 578 */ 579 580 /* 581 * Alternate function AF7 582 */ 583 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 584 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 585 #define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ 586 #define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ 587 /** 588 * 589 */ 590 591 /** 592 * @} 593 */ 594 595 /** 596 * @} 597 */ 598 599 /** @defgroup GPIOEx_Private GPIOEx Private 600 * @{ 601 */ 602 /** 603 * @brief IS_GPIO_AF macro definition 604 */ 605 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF6_TIM21) || \ 606 ((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF1_I2C1) || \ 607 ((__AF__) == GPIO_AF0_TIM21) || ((__AF__) == GPIO_AF1_SPI2) || \ 608 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF1_TIM21) || \ 609 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF2_TIM2) || \ 610 ((__AF__) == GPIO_AF0_SWCLK) || ((__AF__) == GPIO_AF2_TIM3) || \ 611 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF2_USB) || \ 612 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 613 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 614 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 615 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_MCO) || \ 616 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_RTC) || \ 617 ((__AF__) == GPIO_AF0_USB) || ((__AF__) == GPIO_AF2_SPI2) || \ 618 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_USART5) || \ 619 ((__AF__) == GPIO_AF3_TSC) || ((__AF__) == GPIO_AF2_SPI1) || \ 620 ((__AF__) == GPIO_AF3_EVENTOUT) || ((__AF__) == GPIO_AF4_USART2) || \ 621 ((__AF__) == GPIO_AF3_I2C1) || ((__AF__) == GPIO_AF4_LPUART1) || \ 622 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 623 ((__AF__) == GPIO_AF5_TIM2) || ((__AF__) == GPIO_AF4_USART1) || \ 624 ((__AF__) == GPIO_AF5_USART1) || ((__AF__) == GPIO_AF4_TIM22) || \ 625 ((__AF__) == GPIO_AF5_TIM22) || ((__AF__) == GPIO_AF4_TIM3) || \ 626 ((__AF__) == GPIO_AF5_SPI2) || ((__AF__) == GPIO_AF4_I2C1) || \ 627 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF6_USART4) || \ 628 ((__AF__) == GPIO_AF7_COMP2) || ((__AF__) == GPIO_AF6_LPUART1) || \ 629 ((__AF__) == GPIO_AF7_COMP1) || ((__AF__) == GPIO_AF6_I2C1) || \ 630 ((__AF__) == GPIO_AF7_I2C3) || ((__AF__) == GPIO_AF6_EVENTOUT) || \ 631 ((__AF__) == GPIO_AF7_LPUART1) || ((__AF__) == GPIO_AF6_I2C2) || \ 632 ((__AF__) == GPIO_AF6_USART5)) 633 634 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 635 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 636 ((__AF__) == GPIO_AF2_TIM2) || \ 637 ((__AF__) == GPIO_AF3_TSC) || \ 638 ((__AF__) == GPIO_AF4_USART2) || \ 639 ((__AF__) == GPIO_AF5_TIM22) || \ 640 ((__AF__) == GPIO_AF6_EVENTOUT) || \ 641 ((__AF__) == GPIO_AF7_COMP1))) || \ 642 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 643 ((__AF__) == GPIO_AF1_I2C1) || \ 644 ((__AF__) == GPIO_AF2_TIM2) || \ 645 ((__AF__) == GPIO_AF3_TSC) || \ 646 ((__AF__) == GPIO_AF4_TIM22) || \ 647 ((__AF__) == GPIO_AF5_I2C2) || \ 648 ((__AF__) == GPIO_AF6_USART4) || \ 649 ((__AF__) == GPIO_AF7_LPUART1))) || \ 650 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_TIM22) || \ 651 ((__AF__) == GPIO_AF2_TIM3) || \ 652 ((__AF__) == GPIO_AF3_TSC) || \ 653 ((__AF__) == GPIO_AF6_USART4) || \ 654 ((__AF__) == GPIO_AF7_I2C3))) || \ 655 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_TIM21) || \ 656 ((__AF__) == GPIO_AF1_TIM21) || \ 657 ((__AF__) == GPIO_AF2_TIM3) || \ 658 ((__AF__) == GPIO_AF6_USART5))) || \ 659 (((__INSTANCE__) == GPIOE) && (((__AF__) == GPIO_AF0_TIM22) || \ 660 ((__AF__) == GPIO_AF2_TIM3) || \ 661 ((__AF__) == GPIO_AF6_USART4))) || \ 662 (((__INSTANCE__) == GPIOH) && (((__AF__) == GPIO_AF0_USB)))) 663 664 /** 665 * @} 666 */ 667 #endif /* (STM32L082xx) || (STM32L072xx) */ 668 669 670 /*----------------------------------------------------------------------------*/ 671 /*------------------------- STM32L081xx and STM32L071xx-----------------------*/ 672 /*----------------------------------------------------------------------------*/ 673 #if defined (STM32L081xx) || defined (STM32L071xx) 674 675 /* The table below gives an overview of the different alternate functions per port. 676 * For more details refer yourself to the product data sheet. 677 * 678 */ 679 680 681 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 682 *______________________________________________________________________________ 683 * PA0 | | |TIM2_C1 | |USART2 |TIM2_TR |USART4 |COMP1 | 684 * PA1 |EVENTOUT| |TIM2_C2 | |USART2 |TIM21_TR|USART4 | | 685 * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | |LPUART1 |COMP2 | 686 * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | |LPUART1 | | 687 * PA4 |SPI1 | | | |USART2 |TIM22_TR| | | 688 * PA5 |SPI1 | |TIM2_TR | | |TIM2_C1 | | | 689 * PA6 |SPI1 | |TIM3_C1 | |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | 690 * PA7 |SPI1 | |TIM3_C2 | | |TIM22_C2|EVENTOUT|COMP2 | 691 * PA8 |MCO | | |EVENTOUT|USART1 | | |I2C3 | 692 * PA9 |MCO | | | |USART1 | |I2C1 |I2C3 | 693 * PA10| | | | |USART1 | |I2C1 | | 694 * PA11|SPI1 | |EVENTOUT| |USART1 | |I2C2 |COMP1 | 695 * PA12|SPI1 | |EVENTOUT| |USART1 | |I2C2 |COMP2 | 696 * PA13|SWDIO | | | | | |LPUART1 | | 697 * PA14|SWCLK | | | |USART2 | |LPUART1 | | 698 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | 699 *______________________________________________________________________________ 700 * PB0 |EVENTOUT| |TIM3_C3 | | | | | | 701 * PB1 | | |TIM3_C4 | |LPUART1 | | | | 702 * PB2 | | |LPTIM1_O| | | | |I2C3 | 703 * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT|USART1 |USART5 | | 704 * PB4 |SPI1 | |TIM3_C1 | |TIM22_C1|USART1 |USART5 |I2C3 | 705 * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | 706 * | | | | |TIM22_C2| | | | 707 * PB6 |USART1 |I2C1 |LPTIM1_T| | | | | | 708 * PB7 |USART1 |I2C1 |LPTIM1_I| | | |USART4 | | 709 * PB8 | | | | |I2C1 | | | | 710 * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | 711 * PB10| | |TIM2_C3 | |LPUART1 |SPI2 |I2C2 |LPUART1 | 712 * PB11|EVENTOUT| |TIM2_C4 | |LPUART1 | |I2C2 |LPUART1 | 713 * PB12|SPI2 | |LPUART1 | | |I2C2 |EVENTOUT| | 714 * PB13|SPI2 | |MCO | |LPUART1 |I2C2 |TIM21_C1| | 715 * PB14|SPI2 | |RTC | |LPUART1 |I2C2 |TIM21_C2| | 716 * PB15|SPI2 | |RTC | | | | | | 717 *______________________________________________________________________________ 718 * PC0 |LPTIM1_I| |EVENTOUT| | | |LPUART1 |I2C3 | 719 * PC1 |LPTIM1_O| |EVENTOUT| | | |LPUART1 |I2C3 | 720 * PC2 |LPTIM1_I| |SPI2 | | | | | | 721 * PC3 |LPTIM1_T| |SPI2 | | | | | | 722 * PC4 |EVENTOUT| |LPUART1 | | | | | | 723 * PC5 | | |LPUART1 | | | | | | 724 * PC6 |TIM22_C1| |TIM3_C1 | | | | | | 725 * PC7 |TIM22_C2| |TIM3_C2 | | | | | | 726 * PC8 |TIM22_TR| |TIM3_C3 | | | | | | 727 * PC9 |TIM21_TR| | | | | | |I2C3 | 728 * | | |TIM3_C4 | | | | | | 729 * PC10|LPUART1 | | | | | |USART4 | | 730 * PC11|LPUART1 | | | | | |USART4 | | 731 * PC12| | |USART5 | | | |USART4 | | 732 * PC13| | | | | | | | | 733 * PC14| | | | | | | | | 734 * PC15| | | | | | | | | 735 *______________________________________________________________________________ 736 * PD0 |TIM21_C1|SPI2 | | | | | | | 737 * PD1 | |SPI2 | | | | | | | 738 * PD2 |LPUART1 | |TIM3_TR | | | |USART5 | | 739 * PD3 |USART2 | |SPI2 | | | | | | 740 * PD4 |USART2 |SPI2 | | | | | | | 741 * PD5 |USART2 | | | | | | | | 742 * PD6 |USART2 | | | | | | | | 743 * PD7 |USART2 |TIM21_C2| | | | | | | 744 * PD8 |LPUART1 | | | | | | | | 745 * PD9 |LPUART1 | | | | | | | | 746 * PD10| | | | | | | | | 747 * PD11|LPUART1 | | | | | | | | 748 * PD12|LPUART1 | | | | | | | | 749 * PD13| | | | | | | | | 750 * PD14| | | | | | | | | 751 * PD15| | | | | | | | | 752 *______________________________________________________________________________ 753 * PE0 | | |EVENTOUT| | | | | | 754 * PE1 | | |EVENTOUT| | | | | | 755 * PE2 | | |TIM3_TR | | | | | | 756 * PE3 |TIM22_C1| |TIM3_C1 | | | | | | 757 * PE4 |TIM22_C2| |TIM3_C2 | | | | | | 758 * PE5 |TIM21_C1| |TIM3_C3 | | | | | | 759 * PE6 |TIM21_C2| |TIM3_C4 | | | | | | 760 * PE7 | | | | | | |USART5 | | 761 * PE8 | | | | | | |USART4 | | 762 * PE9 |TIM2_C1 | |TIM2_TR | | | |USART4 | | 763 * PE10|TIM2_C2 | | | | | |USART5 | | 764 * PE11|TIM2_C3 | | | | | |USART5 | | 765 * PE12|TIM2_C4 | |SPI1 | | | | | | 766 * PE13| | |SPI1 | | | | | | 767 * PE14| | |SPI1 | | | | | | 768 * PE15| | |SPI1 | | | | | | 769 *______________________________________________________________________________ 770 * PH0 | | | | | | | | | 771 * PH1 | | | | | | | | | 772 * PH9 | | | | | | | | | 773 * PH10| | | | | | | | | 774 * 775 */ 776 777 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 778 * @{ 779 */ 780 781 /* 782 * Alternate function AF0 783 * 784 */ 785 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 786 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 787 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 788 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 789 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 790 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 791 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 792 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 793 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 794 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 795 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 796 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 797 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 798 /** 799 * 800 */ 801 802 /* 803 * Alternate function AF1 804 * 805 */ 806 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 807 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 808 #define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ 809 /** 810 * 811 */ 812 813 /* 814 * Alternate function AF2 815 * 816 */ 817 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 818 #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ 819 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 820 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 821 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 822 #define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ 823 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 824 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 825 #define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ 826 #define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ 827 /** 828 * 829 */ 830 831 /* 832 * Alternate function AF3 833 * @{ 834 */ 835 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 836 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 837 /** 838 * 839 */ 840 841 /* 842 * Alternate function AF4 843 * 844 */ 845 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 846 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 847 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 848 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 849 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 850 #define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ 851 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 852 /** 853 * 854 */ 855 856 /* 857 * Alternate function AF5 858 * 859 */ 860 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 861 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 862 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 863 #define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ 864 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 865 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 866 /** 867 * 868 */ 869 870 /* 871 * Alternate function AF6 872 * 873 */ 874 #define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ 875 #define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ 876 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 877 #define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ 878 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 879 #define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ 880 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 881 /** 882 * 883 */ 884 885 /* 886 * Alternate function AF7 887 * 888 */ 889 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 890 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 891 #define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ 892 #define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ 893 /** 894 * 895 */ 896 897 /** 898 * @} 899 */ 900 901 /** 902 * @} 903 */ 904 905 /** @defgroup GPIOEx_Private GPIOEx Private 906 * @{ 907 */ 908 909 /** 910 * IS_GPIO_AF macro definition 911 */ 912 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF7_LPUART1) || \ 913 ((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF1_I2C1) || \ 914 ((__AF__) == GPIO_AF0_TIM21) || ((__AF__) == GPIO_AF1_SPI2) || \ 915 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF1_TIM21) || \ 916 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF2_TIM2) || \ 917 ((__AF__) == GPIO_AF0_SWCLK) || ((__AF__) == GPIO_AF2_TIM3) || \ 918 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF6_TIM21) || \ 919 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 920 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 921 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 922 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_MCO) || \ 923 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_RTC) || \ 924 ((__AF__) == GPIO_AF2_SPI2) || ((__AF__) == GPIO_AF6_USART5) || \ 925 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF2_USART5) || \ 926 ((__AF__) == GPIO_AF2_SPI1) || ((__AF__) == GPIO_AF6_I2C2) || \ 927 ((__AF__) == GPIO_AF3_EVENTOUT) || ((__AF__) == GPIO_AF4_USART2) || \ 928 ((__AF__) == GPIO_AF3_I2C1) || ((__AF__) == GPIO_AF4_LPUART1) || \ 929 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 930 ((__AF__) == GPIO_AF5_TIM2) || ((__AF__) == GPIO_AF4_USART1) || \ 931 ((__AF__) == GPIO_AF5_USART1) || ((__AF__) == GPIO_AF4_TIM22) || \ 932 ((__AF__) == GPIO_AF5_TIM22) || ((__AF__) == GPIO_AF4_TIM3) || \ 933 ((__AF__) == GPIO_AF5_SPI2) || ((__AF__) == GPIO_AF4_I2C1) || \ 934 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF6_USART4) || \ 935 ((__AF__) == GPIO_AF7_COMP2) || ((__AF__) == GPIO_AF6_LPUART1) || \ 936 ((__AF__) == GPIO_AF7_COMP1) || ((__AF__) == GPIO_AF6_I2C1) || \ 937 ((__AF__) == GPIO_AF7_I2C3) || ((__AF__) == GPIO_AF6_EVENTOUT)) 938 939 940 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 941 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 942 ((__AF__) == GPIO_AF2_TIM2) || \ 943 ((__AF__) == GPIO_AF3_EVENTOUT) || \ 944 ((__AF__) == GPIO_AF4_USART2) || \ 945 ((__AF__) == GPIO_AF5_TIM22) || \ 946 ((__AF__) == GPIO_AF6_USART4) || \ 947 ((__AF__) == GPIO_AF7_COMP1))) || \ 948 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 949 ((__AF__) == GPIO_AF1_I2C1) || \ 950 ((__AF__) == GPIO_AF2_TIM2) || \ 951 ((__AF__) == GPIO_AF3_I2C1) || \ 952 ((__AF__) == GPIO_AF4_I2C1) || \ 953 ((__AF__) == GPIO_AF5_I2C2) || \ 954 ((__AF__) == GPIO_AF6_USART4) || \ 955 ((__AF__) == GPIO_AF7_LPUART1))) || \ 956 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 957 ((__AF__) == GPIO_AF2_TIM3) || \ 958 ((__AF__) == GPIO_AF6_LPUART1) || \ 959 ((__AF__) == GPIO_AF7_I2C3))) || \ 960 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_LPUART1) || \ 961 ((__AF__) == GPIO_AF1_SPI2) || \ 962 ((__AF__) == GPIO_AF2_TIM3) || \ 963 ((__AF__) == GPIO_AF6_USART5))) || \ 964 (((__INSTANCE__) == GPIOE) && (((__AF__) == GPIO_AF0_TIM22) || \ 965 ((__AF__) == GPIO_AF2_TIM3) || \ 966 ((__AF__) == GPIO_AF6_USART4)))) 967 968 /** 969 * @} 970 */ 971 #endif /* (STM32L081xx) || (STM32L071xx) */ 972 973 /*----------------------------------------------------------------------------*/ 974 /*------------------------- STM32L053xx/STM32L063xx---------------------------*/ 975 /*----------------------------------------------------------------------------*/ 976 #if defined (STM32L053xx) || defined (STM32L063xx) 977 978 /* The table below gives an overview of the different alternate functions per port. 979 * For more details refer yourself to the product data sheet. 980 * 981 */ 982 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 983 *______________________________________________________________________________ 984 * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR | |COMP1 | 985 * PA1 |EVENTOUT|LCD |TIM2_C2 |TSC |USART2 |TIM21_TR| | | 986 * PA2 |TIM21_C1|LCD |TIM2_C3 |TSC |USART2 | | |COMP2 | 987 * PA3 |TIM21_C2|LCD |TIM2_C4 |TSC |USART2 | | | | 988 * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | 989 * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | 990 * PA6 |SPI1 |LCD | |TSC |LPUART |TIM22_C1|EVENTOUT|COMP1 | 991 * PA7 |SPI1 |LCD | |TSC | |TIM22_C2|EVENTOUT|COMP2 | 992 * PA8 |MCO |LCD |USB |EVENTOUT|USART1 | | | | 993 * PA9 |MCO |LCD | |TSC |USART1 | | | | 994 * PA10| |LCD | |TSC |USART1 | | | | 995 * PA11|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP1 | 996 * PA12|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP2 | 997 * PA13|SWDIO | |USB | | | | | | 998 * PA14|SWCLK | | | |USART2 | | | | 999 * PA15|SPI1 |LCD |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | 1000 *______________________________________________________________________________ 1001 * PB0 |EVENTOUT|LCD | |TSC | | | | | 1002 * PB1 | |LCD | |TSC |LPUART1 | | | | 1003 * PB2 | | |LPTIM1_O|TSC | | | | | 1004 * PB3 |SPI1 |LCD |TIM2_C2 |TSC |EVENTOUT| | | | 1005 * PB4 |SPI1 |LCD |EVENTOUT|TSC |TIM22_C1| | | | 1006 * PB5 |SPI1 |LCD |LPTIM1_I|I2C1 |TIM22_C2| | | | 1007 * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | 1008 * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | | | | 1009 * PB8 | |LCD | |TSC |I2C1 | | | | 1010 * PB9 | |LCD |EVENTOUT| |I2C1 |SPI2 | | | 1011 * PB10| |LCD |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 | | 1012 * PB11|EVENTOUT|LCD |TIM2_C4 |TSC |LPUART1 | |I2C2 | | 1013 * PB12|SPI2 |LCD |LPUART1 |TSC | |I2C2 |EVENTOUT| | 1014 * PB13|SPI2 |LCD | |TSC |LPUART1 |I2C2 |TIM21_C1| | 1015 * PB14|SPI2 |LCD |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | 1016 * PB15|SPI2 |LCD |RTC | | | | | | 1017 *______________________________________________________________________________ 1018 * PC0 |LPTIM1_I|LCD |EVENTOUT|TSC | | | | | 1019 * PC1 |LPTIM1_O|LCD |EVENTOUT|TSC | | | | | 1020 * PC2 |LPTIM1_I|LCD |SPI2 |TSC | | | | | 1021 * PC3 |LPTIM1_T|LCD |SPI2 |TSC | | | | | 1022 * PC4 |EVENTOUT|LCD |LPUART | | | | | | 1023 * PC5 | |LCD |LPUART |TSC | | | | | 1024 * PC6 |TIM22_C1|LCD | |TSC | | | | | 1025 * PC7 |TIM22_C2|LCD | |TSC | | | | | 1026 * PC8 |TIM22_TR|LCD | |TSC | | | | | 1027 * PC9 |TIM21_TR|LCD |USB |TSC | | | | | 1028 * PC10|LPUART |LCD | | | | | | | 1029 * PC11|LPUART |LCD | | | | | | | 1030 * PC12| |LCD | | | | | | | 1031 * PC13| | | | | | | | | 1032 * PC14| | | | | | | | | 1033 * PC15| | | | | | | | | 1034 *______________________________________________________________________________ 1035 * PD2 |LPUART |LCD | | | | | | | 1036 *______________________________________________________________________________ 1037 * PH0 |USB | | | | | | | | 1038 * PH1 | | | | | | | | | 1039 * * 1040 */ 1041 1042 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 1043 * @{ 1044 */ 1045 1046 /* 1047 * Alternate function AF0 1048 */ 1049 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 1050 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 1051 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 1052 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 1053 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 1054 #define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 1055 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 1056 #define GPIO_AF0_TSC ((uint8_t)0x00U) /* TSC Alternate Function mapping */ 1057 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 1058 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 1059 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 1060 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 1061 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 1062 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 1063 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 1064 /** 1065 * 1066 */ 1067 1068 /* 1069 * Alternate function AF1 1070 */ 1071 #define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ 1072 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 1073 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 1074 #define GPIO_AF1_LCD ((uint8_t)0x01U) /* LCD Alternate Function mapping */ 1075 /** 1076 * 1077 */ 1078 1079 /* 1080 * Alternate function AF2 1081 */ 1082 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 1083 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 1084 #define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ 1085 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 1086 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 1087 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 1088 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 1089 /** 1090 * 1091 */ 1092 1093 /* 1094 * Alternate function AF3 1095 */ 1096 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 1097 #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ 1098 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 1099 /** 1100 * 1101 */ 1102 1103 /* 1104 * Alternate function AF4 1105 */ 1106 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 1107 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 1108 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 1109 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 1110 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 1111 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 1112 /** 1113 * 1114 */ 1115 1116 /* 1117 * Alternate function AF5 1118 */ 1119 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 1120 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 1121 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 1122 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 1123 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 1124 /** 1125 * 1126 */ 1127 1128 /* 1129 * Alternate function AF6 1130 */ 1131 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 1132 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 1133 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 1134 /** 1135 * 1136 */ 1137 1138 /* 1139 * Alternate function AF7 1140 */ 1141 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 1142 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 1143 /** 1144 * 1145 */ 1146 1147 /** 1148 * @} 1149 */ 1150 1151 /** 1152 * @} 1153 */ 1154 1155 /** @defgroup GPIOEx_Private GPIOEx Private 1156 * @{ 1157 */ 1158 /** 1159 * @brief IS_GPIO_AF macro definition 1160 */ 1161 1162 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF2_SPI2) || \ 1163 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 1164 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF2_USB) || \ 1165 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 1166 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_TIM2) || \ 1167 ((__AF__) == GPIO_AF0_USB) || ((__AF__) == GPIO_AF3_TSC) || \ 1168 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1169 ((__AF__) == GPIO_AF0_TSC) || ((__AF__) == GPIO_AF2_RTC) || \ 1170 ((__AF__) == GPIO_AF3_I2C1) || ((__AF__) == GPIO_AF7_COMP2) || \ 1171 ((__AF__) == GPIO_AF0_TIM22) || ((__AF__) == GPIO_AF3_EVENTOUT) || \ 1172 ((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF4_I2C1) || \ 1173 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF4_USART1) || \ 1174 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF0_SWCLK) || \ 1175 ((__AF__) == GPIO_AF1_SPI1) || ((__AF__) == GPIO_AF4_USART2) || \ 1176 ((__AF__) == GPIO_AF1_SPI2) || ((__AF__) == GPIO_AF4_LPUART1) || \ 1177 ((__AF__) == GPIO_AF7_COMP2) || ((__AF__) == GPIO_AF4_TIM22) || \ 1178 ((__AF__) == GPIO_AF1_I2C1) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 1179 ((__AF__) == GPIO_AF1_LCD) || ((__AF__) == GPIO_AF5_SPI2) || \ 1180 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF5_TIM2) || \ 1181 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF5_TIM22) || \ 1182 ((__AF__) == GPIO_AF6_I2C2) || ((__AF__) == GPIO_AF6_TIM21) || \ 1183 ((__AF__) == GPIO_AF6_EVENTOUT) || ((__AF__) == GPIO_AF7_COMP1)) 1184 1185 1186 1187 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 1188 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1189 ((__AF__) == GPIO_AF1_LCD) || \ 1190 ((__AF__) == GPIO_AF2_TIM2) || \ 1191 ((__AF__) == GPIO_AF3_TSC) || \ 1192 ((__AF__) == GPIO_AF4_USART2) || \ 1193 ((__AF__) == GPIO_AF5_TIM22) || \ 1194 ((__AF__) == GPIO_AF6_EVENTOUT) || \ 1195 ((__AF__) == GPIO_AF7_COMP1))) || \ 1196 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1197 ((__AF__) == GPIO_AF1_LCD) || \ 1198 ((__AF__) == GPIO_AF2_TIM2) || \ 1199 ((__AF__) == GPIO_AF3_TSC) || \ 1200 ((__AF__) == GPIO_AF4_EVENTOUT) || \ 1201 ((__AF__) == GPIO_AF5_I2C2) || \ 1202 ((__AF__) == GPIO_AF6_TIM21))) || \ 1203 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1204 ((__AF__) == GPIO_AF1_LCD) || \ 1205 ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1206 ((__AF__) == GPIO_AF3_TSC))) || \ 1207 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_LPUART1) || \ 1208 ((__AF__) == GPIO_AF1_LCD))) || \ 1209 (((__INSTANCE__) == GPIOH) && (((__AF__) == GPIO_AF0_USB)))) 1210 1211 /** 1212 * @} 1213 */ 1214 1215 #endif /* STM32L053xx || STM32L063xx */ 1216 /*------------------------------------------------------------------------------------------*/ 1217 1218 /*----------------------------------------------------------------------------*/ 1219 /*------------------------- STM32L052xx/STM32L062xx---------------------------*/ 1220 /*----------------------------------------------------------------------------*/ 1221 #if defined (STM32L052xx) || defined (STM32L062xx) 1222 1223 /* The table below gives an overview of the different alternate functions per port. 1224 * For more details refer yourself to the product data sheet. 1225 * 1226 */ 1227 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 1228 *______________________________________________________________________________ 1229 * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR | |COMP1 | 1230 * PA1 |EVENTOUT| |TIM2_C2 |TSC |USART2 |TIM21_TR| | | 1231 * PA2 |TIM21_C1| |TIM2_C3 |TSC |USART2 | | |COMP2 | 1232 * PA3 |TIM21_C2| |TIM2_C4 |TSC |USART2 | | | | 1233 * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | 1234 * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | 1235 * PA6 |SPI1 | | |TSC |LPUART |TIM22_C1|EVENTOUT|COMP1 | 1236 * PA7 |SPI1 | | |TSC | |TIM22_C2|EVENTOUT|COMP2 | 1237 * PA8 |MCO | |USB |EVENTOUT|USART1 | | | | 1238 * PA9 |MCO | | |TSC |USART1 | | | | 1239 * PA10| | | |TSC |USART1 | | | | 1240 * PA11|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP1 | 1241 * PA12|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP2 | 1242 * PA13|SWDIO | |USB | | | | | | 1243 * PA14|SWCLK | | | |USART2 | | | | 1244 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | 1245 *______________________________________________________________________________ 1246 * PB0 |EVENTOUT| | |TSC | | | | | 1247 * PB1 | | | |TSC |LPUART1 | | | | 1248 * PB2 | | |LPTIM1_O|TSC | | | | | 1249 * PB3 |SPI1 | |TIM2_C2 |TSC |EVENTOUT| | | | 1250 * PB4 |SPI1 | |EVENTOUT|TSC |TIM22_C1| | | | 1251 * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | 1252 * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | 1253 * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | | | | 1254 * PB8 | | | |TSC |I2C1 | | | | 1255 * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | 1256 * PB10| | |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 | | 1257 * PB11|EVENTOUT| |TIM2_C4 |TSC |LPUART1 | |I2C2 | | 1258 * PB12|SPI2 | |LPUART1 |TSC | |I2C2 |EVENTOUT| | 1259 * PB13|SPI2 | | |TSC |LPUART1 |I2C2 |TIM21_C1| | 1260 * PB14|SPI2 | |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | 1261 * PB15|SPI2 | |RTC | | | | | | 1262 *______________________________________________________________________________ 1263 * PC0 |LPTIM1_I| |EVENTOUT|TSC | | | | | 1264 * PC1 |LPTIM1_O| |EVENTOUT|TSC | | | | | 1265 * PC2 |LPTIM1_I| |SPI2 |TSC | | | | | 1266 * PC3 |LPTIM1_T| |SPI2 |TSC | | | | | 1267 * PC4 |EVENTOUT| |LPUART | | | | | | 1268 * PC5 | | |LPUART |TSC | | | | | 1269 * PC6 |TIM22_C1| | |TSC | | | | | 1270 * PC7 |TIM22_C2| | |TSC | | | | | 1271 * PC8 |TIM22_TR| | |TSC | | | | | 1272 * PC9 |TIM21_TR| |USB |TSC | | | | | 1273 * PC10|LPUART | | | | | | | | 1274 * PC11|LPUART | | | | | | | | 1275 * PC12| | | | | | | | | 1276 * PC13| | | | | | | | | 1277 * PC14| | | | | | | | | 1278 * PC15| | | | | | | | | 1279 *______________________________________________________________________________ 1280 * PD2 |LPUART | | | | | | | | 1281 *______________________________________________________________________________ 1282 * PH0 |USB | | | | | | | | 1283 * PH1 | | | | | | | | | 1284 * * 1285 */ 1286 1287 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 1288 * @{ 1289 */ 1290 1291 /* 1292 * Alternate function AF0 1293 */ 1294 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 1295 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 1296 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 1297 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 1298 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 1299 #define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ 1300 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 1301 #define GPIO_AF0_TSC ((uint8_t)0x00U) /* TSC Alternate Function mapping */ 1302 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 1303 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 1304 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 1305 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 1306 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 1307 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 1308 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 1309 /** 1310 * 1311 */ 1312 1313 /* 1314 * Alternate function AF1 1315 */ 1316 #define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ 1317 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 1318 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 1319 /** 1320 * 1321 */ 1322 1323 /** 1324 * Alternate function AF2 1325 */ 1326 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 1327 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 1328 #define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ 1329 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 1330 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 1331 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 1332 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 1333 /** 1334 * 1335 */ 1336 1337 /* 1338 * Alternate function AF3 1339 */ 1340 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 1341 #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ 1342 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 1343 /** 1344 * 1345 */ 1346 1347 /* 1348 * Alternate function AF4 1349 */ 1350 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 1351 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 1352 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 1353 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 1354 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 1355 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 1356 /** 1357 * 1358 */ 1359 1360 /* 1361 * Alternate function AF5 1362 */ 1363 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 1364 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 1365 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 1366 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 1367 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 1368 /** 1369 * 1370 */ 1371 1372 /* 1373 * Alternate function AF6 1374 */ 1375 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 1376 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 1377 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 1378 /** 1379 * 1380 */ 1381 1382 /* 1383 * Alternate function AF7 1384 */ 1385 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 1386 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 1387 /** 1388 * 1389 */ 1390 1391 /** 1392 * @} 1393 */ 1394 1395 /** 1396 * @} 1397 */ 1398 1399 /** @defgroup GPIOEx_Private GPIOEx Private 1400 * @{ 1401 */ 1402 /** 1403 * @brief IS_GPIO_AF macro definition 1404 */ 1405 1406 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF2_SPI2) || \ 1407 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 1408 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF2_USB) || \ 1409 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 1410 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_TIM2) || \ 1411 ((__AF__) == GPIO_AF0_USB) || ((__AF__) == GPIO_AF4_TIM22) || \ 1412 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1413 ((__AF__) == GPIO_AF0_TSC) || ((__AF__) == GPIO_AF2_RTC) || \ 1414 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF3_I2C1) || \ 1415 ((__AF__) == GPIO_AF0_TIM21) || ((__AF__) == GPIO_AF3_TSC) || \ 1416 ((__AF__) == GPIO_AF0_TIM22) || ((__AF__) == GPIO_AF3_EVENTOUT) || \ 1417 ((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF4_I2C1) || \ 1418 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF4_USART1) || \ 1419 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF0_SWCLK) || \ 1420 ((__AF__) == GPIO_AF1_SPI1) || ((__AF__) == GPIO_AF4_USART2) || \ 1421 ((__AF__) == GPIO_AF1_SPI2) || ((__AF__) == GPIO_AF4_LPUART1) || \ 1422 ((__AF__) == GPIO_AF1_I2C1) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 1423 ((__AF__) == GPIO_AF6_EVENTOUT) || ((__AF__) == GPIO_AF5_SPI2) || \ 1424 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF5_TIM2) || \ 1425 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF5_TIM22) || \ 1426 ((__AF__) == GPIO_AF6_I2C2) || ((__AF__) == GPIO_AF6_TIM21) || \ 1427 ((__AF__) == GPIO_AF7_COMP2) || ((__AF__) == GPIO_AF7_COMP1)) 1428 1429 1430 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 1431 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1432 ((__AF__) == GPIO_AF2_TIM2) || \ 1433 ((__AF__) == GPIO_AF3_TSC) || \ 1434 ((__AF__) == GPIO_AF4_USART2) || \ 1435 ((__AF__) == GPIO_AF5_TIM22) || \ 1436 ((__AF__) == GPIO_AF6_EVENTOUT) || \ 1437 ((__AF__) == GPIO_AF7_COMP1))) || \ 1438 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1439 ((__AF__) == GPIO_AF1_I2C1) || \ 1440 ((__AF__) == GPIO_AF2_TIM2) || \ 1441 ((__AF__) == GPIO_AF3_TSC) || \ 1442 ((__AF__) == GPIO_AF4_LPUART1) || \ 1443 ((__AF__) == GPIO_AF5_I2C2) || \ 1444 ((__AF__) == GPIO_AF6_EVENTOUT))) || \ 1445 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1446 ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1447 ((__AF__) == GPIO_AF3_TSC))) || \ 1448 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_LPUART1))) || \ 1449 (((__INSTANCE__) == GPIOH) && (((__AF__) == GPIO_AF0_USB)))) 1450 1451 /** 1452 * @} 1453 */ 1454 #endif /* STM32L052xx || STM32L062xx */ 1455 /*------------------------------------------------------------------------------------------*/ 1456 1457 /*----------------------------------------------------------------------------*/ 1458 /*------------------------- STM32L051xx/STM32L061xx---------------------------*/ 1459 /*----------------------------------------------------------------------------*/ 1460 #if defined (STM32L051xx)|| defined (STM32L061xx) 1461 /* The table below gives an overview of the different alternate functions per port. 1462 * For more details refer yourself to the product data sheet. 1463 * 1464 */ 1465 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 1466 *______________________________________________________________________________ 1467 * PA0 | | |TIM2_C1 | |USART2 |TIM2_TR | |COMP1 | 1468 * PA1 |EVENTOUT| |TIM2_C2 | |USART2 |TIM21_TR| | | 1469 * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | | |COMP2 | 1470 * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | | | | 1471 * PA4 |SPI1 | | | |USART2 |TIM22_TR| | | 1472 * PA5 |SPI1 | |TIM2_TR | | |TIM2_C1 | | | 1473 * PA6 |SPI1 | | | |LPUART |TIM22_C1|EVENTOUT|COMP1 | 1474 * PA7 |SPI1 | | | | |TIM22_C2|EVENTOUT|COMP2 | 1475 * PA8 |MCO | | |EVENTOUT|USART1 | | | | 1476 * PA9 |MCO | | | |USART1 | | | | 1477 * PA10| | | | |USART1 | | | | 1478 * PA11|SPI1 | |EVENTOUT| |USART1 | | |COMP1 | 1479 * PA12|SPI1 | |EVENTOUT| |USART1 | | |COMP2 | 1480 * PA13|SWDIO | | | | | | | | 1481 * PA14|SWCLK | | | |USART2 | | | | 1482 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | 1483 *______________________________________________________________________________ 1484 * PB0 |EVENTOUT| | | | | | | | 1485 * PB1 | | | | |LPUART1 | | | | 1486 * PB2 | | |LPTIM1_O| | | | | | 1487 * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT| | | | 1488 * PB4 |SPI1 | |EVENTOUT| |TIM22_C1| | | | 1489 * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | 1490 * PB6 |USART1 |I2C1 |LPTIM1_T| | | | | | 1491 * PB7 |USART1 |I2C1 |LPTIM1_I| | | | | | 1492 * PB8 | | | | |I2C1 | | | | 1493 * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | 1494 * PB10| | |TIM2_C3 | |LPUART1 |SPI2 |I2C2 | | 1495 * PB11|EVENTOUT| |TIM2_C4 | |LPUART1 | |I2C2 | | 1496 * PB12|SPI2 | |LPUART1 | | |I2C2 |EVENTOUT| | 1497 * PB13|SPI2 | | | |LPUART1 |I2C2 |TIM21_C1| | 1498 * PB14|SPI2 | |RTC | |LPUART1 |I2C2 |TIM21_C2| | 1499 * PB15|SPI2 | |RTC | | | | | | 1500 *______________________________________________________________________________ 1501 * PC0 |LPTIM1_I| |EVENTOUT| | | | | | 1502 * PC1 |LPTIM1_O| |EVENTOUT| | | | | | 1503 * PC2 |LPTIM1_I| |SPI2 | | | | | | 1504 * PC3 |LPTIM1_T| |SPI2 | | | | | | 1505 * PC4 |EVENTOUT| |LPUART | | | | | | 1506 * PC5 | | |LPUART | | | | | | 1507 * PC6 |TIM22_C1| | | | | | | | 1508 * PC7 |TIM22_C2| | | | | | | | 1509 * PC8 |TIM22_TR| | | | | | | | 1510 * PC9 |TIM21_TR| | | | | | | | 1511 * PC10|LPUART | | | | | | | | 1512 * PC11|LPUART | | | | | | | | 1513 * PC12| | | | | | | | | 1514 * PC13| | | | | | | | | 1515 * PC14| | | | | | | | | 1516 * PC15| | | | | | | | | 1517 *______________________________________________________________________________ 1518 * PD2 |LPUART | | | | | | | | 1519 *______________________________________________________________________________ 1520 * PH0 | | | | | | | | | 1521 * PH1 | | | | | | | | | 1522 * * 1523 */ 1524 1525 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 1526 * @{ 1527 */ 1528 1529 /* 1530 * Alternate function AF0 1531 */ 1532 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 1533 #define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ 1534 #define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ 1535 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 1536 #define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ 1537 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 1538 #define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ 1539 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 1540 #define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ 1541 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 1542 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 1543 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 1544 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 1545 /** 1546 * 1547 */ 1548 1549 /* 1550 * Alternate function AF1 1551 */ 1552 #define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ 1553 #define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ 1554 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 1555 /** 1556 * 1557 */ 1558 1559 /* 1560 * Alternate function AF2 1561 */ 1562 #define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ 1563 #define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ 1564 #define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ 1565 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 1566 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 1567 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 1568 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 1569 /** 1570 * 1571 */ 1572 1573 /* 1574 * Alternate function AF3 1575 */ 1576 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 1577 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 1578 /** 1579 * 1580 */ 1581 1582 /* 1583 * Alternate function AF4 1584 */ 1585 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 1586 #define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ 1587 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 1588 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 1589 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 1590 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 1591 /** 1592 * 1593 */ 1594 1595 /* 1596 * Alternate function AF5 1597 */ 1598 #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ 1599 #define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ 1600 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 1601 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 1602 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 1603 /** 1604 * 1605 */ 1606 1607 /* 1608 * Alternate function AF6 1609 */ 1610 #define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ 1611 #define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ 1612 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 1613 /** 1614 * 1615 */ 1616 1617 /* 1618 * Alternate function AF7 1619 */ 1620 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 1621 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 1622 /** 1623 * 1624 */ 1625 1626 /** 1627 * @} 1628 */ 1629 1630 /** 1631 * @} 1632 */ 1633 1634 /** @defgroup GPIOEx_Private GPIOEx Private 1635 * @{ 1636 */ 1637 1638 /** 1639 * @brief IS_GPIO_AF macro definition 1640 */ 1641 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_SPI1) || ((__AF__) == GPIO_AF2_SPI2) || \ 1642 ((__AF__) == GPIO_AF0_SPI2) || ((__AF__) == GPIO_AF2_LPUART1) || \ 1643 ((__AF__) == GPIO_AF0_USART1) || ((__AF__) == GPIO_AF7_COMP1) || \ 1644 ((__AF__) == GPIO_AF0_USART2) || ((__AF__) == GPIO_AF2_LPTIM1) || \ 1645 ((__AF__) == GPIO_AF0_LPUART1) || ((__AF__) == GPIO_AF2_TIM2) || \ 1646 ((__AF__) == GPIO_AF0_LPTIM1) || ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1647 ((__AF__) == GPIO_AF2_RTC) || ((__AF__) == GPIO_AF4_TIM22) || \ 1648 ((__AF__) == GPIO_AF0_TIM2) || ((__AF__) == GPIO_AF3_I2C1) || \ 1649 ((__AF__) == GPIO_AF0_TIM21) || ((__AF__) == GPIO_AF7_COMP2) || \ 1650 ((__AF__) == GPIO_AF0_TIM22) || ((__AF__) == GPIO_AF3_EVENTOUT) || \ 1651 ((__AF__) == GPIO_AF0_EVENTOUT) || ((__AF__) == GPIO_AF4_I2C1) || \ 1652 ((__AF__) == GPIO_AF0_MCO) || ((__AF__) == GPIO_AF4_USART1) || \ 1653 ((__AF__) == GPIO_AF0_SWDIO) || ((__AF__) == GPIO_AF0_SWCLK) || \ 1654 ((__AF__) == GPIO_AF1_SPI1) || ((__AF__) == GPIO_AF4_USART2) || \ 1655 ((__AF__) == GPIO_AF1_SPI2) || ((__AF__) == GPIO_AF4_LPUART1) || \ 1656 ((__AF__) == GPIO_AF1_I2C1) || ((__AF__) == GPIO_AF4_EVENTOUT) || \ 1657 ((__AF__) == GPIO_AF6_EVENTOUT) || ((__AF__) == GPIO_AF5_SPI2) || \ 1658 ((__AF__) == GPIO_AF5_I2C2) || ((__AF__) == GPIO_AF5_TIM2) || \ 1659 ((__AF__) == GPIO_AF5_TIM21) || ((__AF__) == GPIO_AF5_TIM22) || \ 1660 ((__AF__) == GPIO_AF6_I2C2) || ((__AF__) == GPIO_AF6_TIM21)) 1661 1662 1663 1664 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 1665 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1666 ((__AF__) == GPIO_AF2_TIM2) || \ 1667 ((__AF__) == GPIO_AF3_EVENTOUT) || \ 1668 ((__AF__) == GPIO_AF4_USART2) || \ 1669 ((__AF__) == GPIO_AF5_TIM22) || \ 1670 ((__AF__) == GPIO_AF6_EVENTOUT) || \ 1671 ((__AF__) == GPIO_AF7_COMP2))) || \ 1672 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1673 ((__AF__) == GPIO_AF1_I2C1) || \ 1674 ((__AF__) == GPIO_AF2_TIM2) || \ 1675 ((__AF__) == GPIO_AF3_I2C1) || \ 1676 ((__AF__) == GPIO_AF4_LPUART1) || \ 1677 ((__AF__) == GPIO_AF5_I2C2) || \ 1678 ((__AF__) == GPIO_AF6_TIM21))) || \ 1679 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1680 ((__AF__) == GPIO_AF2_LPUART1))) || \ 1681 (((__INSTANCE__) == GPIOD) && (((__AF__) == GPIO_AF0_LPUART1)))) 1682 1683 /** 1684 * @} 1685 */ 1686 #endif /* STM32L051xx/STM32L061xx*/ 1687 /*------------------------------------------------------------------------------------------*/ 1688 1689 /*----------------------------------------------------------------------------*/ 1690 /*------------------------- STM32L031xx/STM32L041xx---------------------------*/ 1691 /*----------------------------------------------------------------------------*/ 1692 #if defined (STM32L031xx)|| defined (STM32L041xx) 1693 /* The table below gives an overview of the different alternate functions per port. 1694 * For more details refer yourself to the product data sheet. 1695 * 1696 */ 1697 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 1698 *______________________________________________________________________________ 1699 * PA0 | |LPTIM1 |TIM2_C1 | |USART2 |TIM2_TR | |COMP1 | 1700 * PA1 |EVENTOUT|LPTIM1 |TIM2_C2 |I2C1 |USART2 |TIM21_TR| | | 1701 * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | |LPUART1 |COMP2 | 1702 * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | |LPUART1 | | 1703 * PA4 |SPI1 |LPTIM1 | | |USART2 |TIM22_TR| | | 1704 * PA5 |SPI1 |LPTIM1 |TIM2_TR | | |TIM2_C1 | | | 1705 * PA6 |SPI1 |LPTIM1 | | |LPUART |TIM22_C1|EVENTOUT|COMP1 | 1706 * PA7 |SPI1 |LPTIM1 | | |USART2 |TIM22_C2|EVENTOUT|COMP2 | 1707 * PA8 |MCO | |LPTIM1 |EVENTOUT|USART2 |TIM2_C1 | | | 1708 * PA9 |MCO |I2C1 | | |USART2 |TIM22_C1| | | 1709 * PA10| |I2C1 | | |USART2 |TIM22_C2| | | 1710 * PA11|SPI1 | |EVENTOUT| |USART2 |TIM21_C2| |COMP1 | 1711 * PA12|SPI1 | |EVENTOUT| |USART2 | | |COMP2 | 1712 * PA13|SWDIO |LPTIM1 | | | | |LPUART1 | | 1713 * PA14|SWCLK |LPTIM1 | |I2C1 |USART2 | |LPUART1 | | 1714 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | 1715 *_____________________________________________________________________________| 1716 * PB0 |EVENTOUT|SPI1 | | |USART2 |TIM2_C3 | | | 1717 * PB1 |USART2 |SPI1 | | |LPUART1 |TIM2_C4 | | | 1718 * PB2 | | |LPTIM1_O| | | | | | 1719 * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT| | | | 1720 * PB4 |SPI1 | |EVENTOUT| |TIM22_C1| | | | 1721 * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | 1722 * PB6 |USART2 |I2C1 |LPTIM1_T| | |TIM21_C1| | | 1723 * PB7 |USART2 |I2C1 |LPTIM1_I| | | | | | 1724 * PB8 | | | | |I2C1 | | | | 1725 * PB9 | | |EVENTOUT| |I2C1 | | | | 1726 * PB10| | |TIM2_C3 | | | |LPUART1 | | 1727 * PB11|EVENTOUT| |TIM2_C4 | | | |LPUART1 | | 1728 * PB12|SPI2 | | | | | |EVENTOUT| | 1729 * PB13|SPI2 | |MCO | | |TIM21_C1|LPUART1 | | 1730 * PB14|SPI2 | |RTC | | |TIM21_C2|LPUART1 | | 1731 * PB15|SPI2 | |RTC | | | | | | 1732 *_____________________________________________________________________________| 1733 * PC0 |LPTIM1_I| |EVENTOUT| | | |LPUART1 | | 1734 * PC13| | | | | | | | | 1735 * PC14| | | | | | | | | 1736 * PC15| | | | | | | | | 1737 *_____________________________________________________________________________| 1738 * PH0 | | | | | | | | | 1739 * PH1 | | | | | | | | | 1740 *_____________________________________________________________________________| 1741 */ 1742 1743 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 1744 * @{ 1745 */ 1746 1747 /* 1748 * Alternate function AF0 1749 */ 1750 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 1751 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 1752 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 1753 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 1754 #define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ 1755 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 1756 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 1757 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 1758 /** 1759 * 1760 */ 1761 1762 /* 1763 * Alternate function AF1 1764 */ 1765 #define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ 1766 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 1767 #define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ 1768 /** 1769 * 1770 */ 1771 1772 /* 1773 * Alternate function AF2 1774 */ 1775 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 1776 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 1777 #define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ 1778 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 1779 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 1780 /** 1781 * 1782 */ 1783 1784 /* 1785 * Alternate function AF3 1786 */ 1787 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 1788 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 1789 /** 1790 * 1791 */ 1792 1793 /* 1794 * Alternate function AF4 1795 */ 1796 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 1797 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 1798 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 1799 #define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ 1800 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 1801 /** 1802 * 1803 */ 1804 1805 /* 1806 * Alternate function AF5 1807 */ 1808 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 1809 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 1810 #define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ 1811 /** 1812 * 1813 */ 1814 1815 /* 1816 * Alternate function AF6 1817 */ 1818 #define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ 1819 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 1820 /** 1821 * 1822 */ 1823 1824 /* 1825 * Alternate function AF7 1826 */ 1827 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 1828 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 1829 /** 1830 * 1831 */ 1832 1833 /** 1834 * @} 1835 */ 1836 1837 /** 1838 * @} 1839 */ 1840 1841 /** @defgroup GPIOEx_Private GPIOEx Private 1842 * @{ 1843 */ 1844 /** 1845 * @brief IS_GPIO_AF macro definition 1846 */ 1847 1848 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_EVENTOUT ) || \ 1849 ((__AF__) == GPIO_AF0_TIM21 ) || \ 1850 ((__AF__) == GPIO_AF0_SPI1 ) || \ 1851 ((__AF__) == GPIO_AF0_USART2 ) || \ 1852 ((__AF__) == GPIO_AF0_LPTIM1 ) || \ 1853 ((__AF__) == GPIO_AF0_MCO ) || \ 1854 ((__AF__) == GPIO_AF0_SWDIO ) || \ 1855 ((__AF__) == GPIO_AF0_SWCLK ) || \ 1856 ((__AF__) == GPIO_AF1_SPI1 ) || \ 1857 ((__AF__) == GPIO_AF1_I2C1 ) || \ 1858 ((__AF__) == GPIO_AF1_LPTIM1 ) || \ 1859 ((__AF__) == GPIO_AF2_LPTIM1 ) || \ 1860 ((__AF__) == GPIO_AF2_TIM2 ) || \ 1861 ((__AF__) == GPIO_AF2_MCO ) || \ 1862 ((__AF__) == GPIO_AF2_EVENTOUT ) || \ 1863 ((__AF__) == GPIO_AF2_RTC ) || \ 1864 ((__AF__) == GPIO_AF3_I2C1 ) || \ 1865 ((__AF__) == GPIO_AF3_EVENTOUT ) || \ 1866 ((__AF__) == GPIO_AF4_I2C1 ) || \ 1867 ((__AF__) == GPIO_AF4_USART2 ) || \ 1868 ((__AF__) == GPIO_AF4_LPUART1 ) || \ 1869 ((__AF__) == GPIO_AF4_TIM22 ) || \ 1870 ((__AF__) == GPIO_AF4_EVENTOUT ) || \ 1871 ((__AF__) == GPIO_AF5_TIM2 ) || \ 1872 ((__AF__) == GPIO_AF5_TIM21 ) || \ 1873 ((__AF__) == GPIO_AF5_TIM22 ) || \ 1874 ((__AF__) == GPIO_AF6_LPUART1 ) || \ 1875 ((__AF__) == GPIO_AF6_EVENTOUT ) || \ 1876 ((__AF__) == GPIO_AF7_COMP1 ) || \ 1877 ((__AF__) == GPIO_AF7_COMP2 )) 1878 1879 1880 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 1881 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1882 ((__AF__) == GPIO_AF1_LPTIM1) || \ 1883 ((__AF__) == GPIO_AF2_TIM2) || \ 1884 ((__AF__) == GPIO_AF3_I2C1) || \ 1885 ((__AF__) == GPIO_AF4_USART2) || \ 1886 ((__AF__) == GPIO_AF5_TIM22) || \ 1887 ((__AF__) == GPIO_AF6_LPUART1) || \ 1888 ((__AF__) == GPIO_AF7_COMP2))) || \ 1889 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 1890 ((__AF__) == GPIO_AF1_SPI1) || \ 1891 ((__AF__) == GPIO_AF2_LPTIM1) || \ 1892 ((__AF__) == GPIO_AF3_I2C1) || \ 1893 ((__AF__) == GPIO_AF4_LPUART1) || \ 1894 ((__AF__) == GPIO_AF5_TIM2) || \ 1895 ((__AF__) == GPIO_AF6_EVENTOUT))) || \ 1896 (((__INSTANCE__) == GPIOC) && (((__AF__) == GPIO_AF0_LPTIM1) || \ 1897 ((__AF__) == GPIO_AF2_EVENTOUT) || \ 1898 ((__AF__) == GPIO_AF6_LPUART1)))) 1899 1900 /** 1901 * @} 1902 */ 1903 1904 #endif /* STM32L031xx/STM32L041xx*/ 1905 /*------------------------------------------------------------------------------------------*/ 1906 1907 /*----------------------------------------------------------------------------*/ 1908 /*------------------------- STM32L011xx/STM32L021xx---------------------------*/ 1909 /*----------------------------------------------------------------------------*/ 1910 #if defined (STM32L011xx)|| defined (STM32L021xx) 1911 /* The table below gives an overview of the different alternate functions per port. 1912 * For more details refer yourself to the product data sheet. 1913 * 1914 */ 1915 /* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | 1916 *______________________________________________________________________________________ 1917 * PA0 |USART2_RX|LPTIM1_IN1|TIM2_C1 | |USART2_CTS|TIM2_ETR|LPUART1_RX |COMP1_OUT| 1918 * PA1 |EVENTOUT |LPTIM1_IN2|TIM2_C2 |I2C1 |USART2_RTS|TIM21_TR|LPUART1_TX | | 1919 * PA2 |TIM21_C1 | |TIM2_C3 | |USART2_TX | |LPUART1_TX |COMP2_OUT| 1920 * PA3 |TIM21_C2 | |TIM2_C4 | |USART2_RX | |LPUART1_RX | | 1921 * PA4 |SPI1 |LPTIM1_IN1|LPTIM1_TR|I2C1_SCL|USART2_CK |TIM2_TR |LPUART1_TX |COMP2_OUT| 1922 * PA5 |SPI1 |LPTIM1_IN2|TIM2_TR | | |TIM2_C1 | | | 1923 * PA6 |SPI1 |LPTIM1_ETR| | |LPUART1_CT| |EVENTOUT |COMP1_OUT| 1924 * PA7 |SPI1 |LPTIM1_OUT| | |USART2_CTS|TIM21_T |EVENTOUT |COMP2_OUT| 1925 * PA8 |MCO | |LPTIM1_I1|EVENTOUT|USART2_CK |TIM2_C1 | | | 1926 * PA9 |MCO |I2C1_SCL |LPTIM1_O | |USART2_TX |TIM21_C2| |COMP1_OUT| 1927 * PA10|TIM21_C1 |I2C1_SDA |RTC_REFIN| |USART2_RX |TIM2_C3 | |COMP1_OUT| 1928 * PA11|SPI1 |LPTIM1_OUT|EVENTOUT | |USART2_CTS|TIM21_C2| |COMP1_OUT| 1929 * PA12|SPI1 | |EVENTOUT | |USART2_RTS| | |COMP2_OUT| 1930 * PA13|SWDIO |LPTIM1_T | |I2C1_SDA| |SPI1 |LPUART1_RX |COMP1_OUT| 1931 * PA14|SWCLK |LPTIM1_O | |I2C1_SMB|USART2_TX |SPI1 |LPUART1_TX |COMP2_OUT| 1932 * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2_RX |TIM2_C1 | | | 1933 *______________________________________________________________________________________ | 1934 * PB0 |EVENTOUT |SPI1 |TIM2_C2 | |USART2_RTS|TIM2_C3 | | | 1935 * PB1 |USART2_CK|SPI1 |LPTIM1_I1| |LPUART1_RT|TIM2_C4 | | | 1936 * PB2 | | |LPTIM1_O | | | | | | 1937 * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT | | | | 1938 * PB4 |SPI1 | |EVENTOUT | | | | | | 1939 * PB5 |SPI1 | |LPTIM1_I1|I2C1 | |TIM21_C1| | | 1940 * PB6 |USART2_TX|I2C1_SCL |LPTIM1_T | | |TIM2_C3 |LPUART1_TX | | 1941 * PB7 |USART2_RX|I2C1 |LPTIM1_I2| | |TIM2_C4 |LPUART1_RX | | 1942 * PB8 |USART2_TX| |EVENTOUT | |I2C1 |SPI1 | | | 1943 * PB9 | | | | | | | | | 1944 *______________________________________________________________________________________ | 1945 * PC14| | | | | | | | | 1946 * PC15| | | | | | | | | 1947 *______________________________________________________________________________________ | 1948 */ 1949 1950 /** @defgroup GPIOEx_Alternate_function_selection Alternate function selection 1951 * @{ 1952 */ 1953 1954 /* 1955 * Alternate function AF0 1956 */ 1957 #define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ 1958 #define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ 1959 #define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ 1960 #define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ 1961 #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ 1962 #define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ 1963 #define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ 1964 /** 1965 * 1966 */ 1967 1968 /* 1969 * Alternate function AF1 1970 */ 1971 #define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ 1972 #define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ 1973 #define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ 1974 /** 1975 * 1976 */ 1977 1978 /* Alternate function AF2 1979 * 1980 */ 1981 #define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ 1982 #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ 1983 #define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ 1984 #define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ 1985 /** 1986 * 1987 */ 1988 1989 /* 1990 * Alternate function AF3 1991 */ 1992 #define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ 1993 #define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ 1994 /** 1995 * 1996 */ 1997 1998 /* 1999 * Alternate function AF4 2000 */ 2001 #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ 2002 #define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ 2003 #define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ 2004 #define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ 2005 /** 2006 * 2007 */ 2008 2009 /* 2010 * Alternate function AF5 2011 */ 2012 #define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ 2013 #define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ 2014 #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */ 2015 /** 2016 * 2017 */ 2018 2019 /* 2020 * Alternate function AF6 2021 */ 2022 #define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ 2023 #define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ 2024 /** 2025 * 2026 */ 2027 2028 /* 2029 * Alternate function AF7 2030 */ 2031 #define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ 2032 #define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ 2033 /** 2034 * 2035 */ 2036 2037 /** 2038 * @} 2039 */ 2040 2041 /** 2042 * @} 2043 */ 2044 2045 /** @defgroup GPIOEx_Private GPIOEx Private 2046 * @{ 2047 */ 2048 /** 2049 * IS_GPIO_AF macro definition 2050 */ 2051 2052 #define IS_GPIO_AF(__AF__) (((__AF__) == GPIO_AF0_EVENTOUT ) || \ 2053 ((__AF__) == GPIO_AF0_TIM21 ) || \ 2054 ((__AF__) == GPIO_AF0_SPI1 ) || \ 2055 ((__AF__) == GPIO_AF0_USART2 ) || \ 2056 ((__AF__) == GPIO_AF0_MCO ) || \ 2057 ((__AF__) == GPIO_AF0_SWDIO ) || \ 2058 ((__AF__) == GPIO_AF0_SWCLK ) || \ 2059 ((__AF__) == GPIO_AF1_SPI1 ) || \ 2060 ((__AF__) == GPIO_AF1_I2C1 ) || \ 2061 ((__AF__) == GPIO_AF1_LPTIM1 ) || \ 2062 ((__AF__) == GPIO_AF2_LPTIM1 ) || \ 2063 ((__AF__) == GPIO_AF2_TIM2 ) || \ 2064 ((__AF__) == GPIO_AF2_EVENTOUT ) || \ 2065 ((__AF__) == GPIO_AF2_RTC ) || \ 2066 ((__AF__) == GPIO_AF3_I2C1 ) || \ 2067 ((__AF__) == GPIO_AF3_EVENTOUT ) || \ 2068 ((__AF__) == GPIO_AF4_I2C1 ) || \ 2069 ((__AF__) == GPIO_AF4_USART2 ) || \ 2070 ((__AF__) == GPIO_AF4_LPUART1 ) || \ 2071 ((__AF__) == GPIO_AF4_EVENTOUT ) || \ 2072 ((__AF__) == GPIO_AF5_TIM2 ) || \ 2073 ((__AF__) == GPIO_AF5_TIM21 ) || \ 2074 ((__AF__) == GPIO_AF5_SPI1 ) || \ 2075 ((__AF__) == GPIO_AF6_LPUART1 ) || \ 2076 ((__AF__) == GPIO_AF6_EVENTOUT ) || \ 2077 ((__AF__) == GPIO_AF7_COMP1 ) || \ 2078 ((__AF__) == GPIO_AF7_COMP2 )) 2079 2080 2081 #define IS_GPIO_AF_AVAILABLE(__INSTANCE__,__AF__) \ 2082 ((((__INSTANCE__) == GPIOA) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 2083 ((__AF__) == GPIO_AF1_LPTIM1) || \ 2084 ((__AF__) == GPIO_AF2_TIM2) || \ 2085 ((__AF__) == GPIO_AF3_I2C1) || \ 2086 ((__AF__) == GPIO_AF4_USART2) || \ 2087 ((__AF__) == GPIO_AF5_TIM2) || \ 2088 ((__AF__) == GPIO_AF6_LPUART1) || \ 2089 ((__AF__) == GPIO_AF7_COMP2))) || \ 2090 (((__INSTANCE__) == GPIOB) && (((__AF__) == GPIO_AF0_EVENTOUT) || \ 2091 ((__AF__) == GPIO_AF1_SPI1) || \ 2092 ((__AF__) == GPIO_AF2_LPTIM1) || \ 2093 ((__AF__) == GPIO_AF3_I2C1) || \ 2094 ((__AF__) == GPIO_AF4_LPUART1) || \ 2095 ((__AF__) == GPIO_AF5_TIM2) || \ 2096 ((__AF__) == GPIO_AF6_EVENTOUT)))) 2097 2098 /** 2099 * @} 2100 */ 2101 2102 #endif /* STM32L011xx/STM32L021xx*/ 2103 /*------------------------------------------------------------------------------------------*/ 2104 2105 2106 2107 #if defined (STM32L083xx) || defined (STM32L082xx) || defined (STM32L081xx) || \ 2108 defined (STM32L073xx) || defined (STM32L072xx) || defined (STM32L071xx) 2109 2110 /** @addtogroup GPIOEx_Exported_Constants 2111 * @{ 2112 */ 2113 /** @defgroup GPIOEx_Pin_Available Pin available 2114 * @{ 2115 */ 2116 #define GPIOA_PIN_AVAILABLE GPIO_PIN_All 2117 #define GPIOB_PIN_AVAILABLE GPIO_PIN_All 2118 #define GPIOC_PIN_AVAILABLE GPIO_PIN_All 2119 #define GPIOD_PIN_AVAILABLE GPIO_PIN_All 2120 #define GPIOE_PIN_AVAILABLE GPIO_PIN_All 2121 #define GPIOH_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_9 | GPIO_PIN_10) 2122 /** 2123 * @} 2124 */ 2125 /** 2126 * @} 2127 */ 2128 2129 /** @addtogroup GPIOEx_Private 2130 * @{ 2131 */ 2132 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ 2133 ((__GPIOx__) == (GPIOB))? 1U :\ 2134 ((__GPIOx__) == (GPIOC))? 2U :\ 2135 ((__GPIOx__) == (GPIOD))? 3U :\ 2136 ((__GPIOx__) == (GPIOE))? 4U :\ 2137 ((__GPIOx__) == (GPIOH))? 5U : 6U) 2138 2139 #define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ 2140 ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ 2141 (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ 2142 (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ 2143 (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \ 2144 (((__INSTANCE__) == GPIOE) && (((__PIN__) & (GPIOE_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOE_PIN_AVAILABLE)) == (GPIOE_PIN_AVAILABLE))) || \ 2145 (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) 2146 /** 2147 * @} 2148 */ 2149 #elif defined (STM32L031xx) || defined (STM32L041xx) 2150 2151 /** @addtogroup GPIOEx_Exported_Constants 2152 * @{ 2153 */ 2154 /** @defgroup GPIOEx_Pin_Available Pin available 2155 * @{ 2156 */ 2157 2158 #define GPIOA_PIN_AVAILABLE GPIO_PIN_All 2159 #define GPIOB_PIN_AVAILABLE GPIO_PIN_All 2160 #define GPIOC_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15) 2161 #define GPIOH_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1) 2162 /** 2163 * @} 2164 */ 2165 /** 2166 * @} 2167 */ 2168 2169 /** @addtogroup GPIOEx_Private 2170 * @{ 2171 */ 2172 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ 2173 ((__GPIOx__) == (GPIOB))? 1U :\ 2174 ((__GPIOx__) == (GPIOC))? 2U :\ 2175 ((__GPIOx__) == (GPIOH))? 5U : 6U) 2176 2177 2178 #define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ 2179 ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ 2180 (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ 2181 (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ 2182 (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) 2183 2184 /** 2185 * @} 2186 */ 2187 2188 #elif defined (STM32L011xx) || defined (STM32L021xx) 2189 2190 /** @addtogroup GPIOEx_Exported_Constants 2191 * @{ 2192 */ 2193 /** @defgroup GPIOEx_Pin_Available Pin available 2194 * @{ 2195 */ 2196 2197 #define GPIOA_PIN_AVAILABLE GPIO_PIN_All 2198 #define GPIOB_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | \ 2199 GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 ) 2200 #define GPIOC_PIN_AVAILABLE (GPIO_PIN_14 | GPIO_PIN_15) 2201 2202 /** 2203 * @} 2204 */ 2205 /** 2206 * @} 2207 */ 2208 2209 /** @addtogroup GPIOEx_Private 2210 * @{ 2211 */ 2212 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ 2213 ((__GPIOx__) == (GPIOB))? 1U :\ 2214 ((__GPIOx__) == (GPIOC))? 2U : 6U) 2215 2216 2217 #define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ 2218 ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ 2219 (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ 2220 (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE)))) 2221 /** 2222 * @} 2223 */ 2224 2225 #elif defined (STM32L063xx) || defined (STM32L062xx) || defined (STM32L061xx) || \ 2226 defined (STM32L053xx) || defined (STM32L052xx) || defined (STM32L051xx) 2227 2228 /** @addtogroup GPIOEx_Exported_Constants 2229 * @{ 2230 */ 2231 /** @defgroup GPIOEx_Pin_Available Pin available 2232 * @{ 2233 */ 2234 #define GPIOA_PIN_AVAILABLE GPIO_PIN_All 2235 #define GPIOB_PIN_AVAILABLE GPIO_PIN_All 2236 #define GPIOC_PIN_AVAILABLE GPIO_PIN_All 2237 #define GPIOD_PIN_AVAILABLE GPIO_PIN_2 2238 #define GPIOH_PIN_AVAILABLE GPIO_PIN_0 | GPIO_PIN_1 2239 /** 2240 * @} 2241 */ 2242 /** 2243 * @} 2244 */ 2245 2246 /** @addtogroup GPIOEx_Private 2247 * @{ 2248 */ 2249 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ 2250 ((__GPIOx__) == (GPIOB))? 1U :\ 2251 ((__GPIOx__) == (GPIOC))? 2U :\ 2252 ((__GPIOx__) == (GPIOD))? 3U :\ 2253 ((__GPIOx__) == (GPIOH))? 5U : 6U) 2254 2255 #define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ 2256 ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ 2257 (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ 2258 (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ 2259 (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \ 2260 (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) 2261 /** 2262 * @} 2263 */ 2264 2265 #endif /* STM32L083xx || STM32L082xx || STM32L081xx || STM32L073xx || STM32L072xx || STM32L071xx*/ 2266 2267 2268 /** 2269 * @} 2270 */ 2271 2272 /** 2273 * @} 2274 */ 2275 #ifdef __cplusplus 2276 } 2277 #endif 2278 2279 #endif /* __STM32L0xx_HAL_GPIO_EX_H */ 2280 2281 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 2282 2283