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