1 /**
2   ******************************************************************************
3   * @file    stm32l5xx_hal_gpio_ex.h
4   * @author  MCD Application Team
5   * @brief   Header file of GPIO HAL Extended module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10   * All rights reserved.</center></h2>
11   *
12   * This software component is licensed by ST under BSD 3-Clause license,
13   * the "License"; You may not use this file except in compliance with the
14   * License. You may obtain a copy of the License at:
15   *                        opensource.org/licenses/BSD-3-Clause
16   *
17   ******************************************************************************
18   */
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L5xx_HAL_GPIO_EX_H
22 #define STM32L5xx_HAL_GPIO_EX_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l5xx_hal_def.h"
30 
31 /** @addtogroup STM32L5xx_HAL_Driver
32   * @{
33   */
34 
35 /** @defgroup GPIOEx GPIOEx
36   * @brief GPIO Extended HAL module driver
37   * @{
38   */
39 
40 /* Exported types ------------------------------------------------------------*/
41 /* Exported constants --------------------------------------------------------*/
42 /** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants
43   * @{
44   */
45 
46 /** @defgroup GPIOEx_Alternate_function_selection GPIOEx Alternate function selection
47   * @{
48   */
49 
50 #if defined(STM32L552xx) || defined(STM32L562xx)
51 /*--------------STM32L552xx/STM32L562xx---------------------------*/
52 /**
53   * @brief   AF 0 selection
54   */
55 #define GPIO_AF0_RTC_50Hz      ((uint8_t)0x00)  /* RTC_50Hz Alternate Function mapping                       */
56 #define GPIO_AF0_MCO           ((uint8_t)0x00)  /* MCO (MCO1 and MCO2) Alternate Function mapping            */
57 #define GPIO_AF0_SWJ           ((uint8_t)0x00)  /* SWJ (SWD and JTAG) Alternate Function mapping             */
58 #define GPIO_AF0_TRACE         ((uint8_t)0x00)  /* TRACE Alternate Function mapping                          */
59 
60 /**
61   * @brief   AF 1 selection
62   */
63 #define GPIO_AF1_TIM1          ((uint8_t)0x01)  /* TIM1 Alternate Function mapping */
64 #define GPIO_AF1_TIM2          ((uint8_t)0x01)  /* TIM2 Alternate Function mapping */
65 #define GPIO_AF1_TIM5          ((uint8_t)0x01)  /* TIM5 Alternate Function mapping */
66 #define GPIO_AF1_TIM8          ((uint8_t)0x01)  /* TIM8 Alternate Function mapping */
67 #define GPIO_AF1_LPTIM1        ((uint8_t)0x01)  /* LPTIM1 Alternate Function mapping */
68 #define GPIO_AF1_IR            ((uint8_t)0x01)  /* IR Alternate Function mapping */
69 
70 /**
71   * @brief   AF 2 selection
72   */
73 #define GPIO_AF2_TIM1          ((uint8_t)0x02)  /* TIM1 Alternate Function mapping */
74 #define GPIO_AF2_TIM2          ((uint8_t)0x02)  /* TIM2 Alternate Function mapping */
75 #define GPIO_AF2_TIM3          ((uint8_t)0x02)  /* TIM3 Alternate Function mapping */
76 #define GPIO_AF2_TIM4          ((uint8_t)0x02)  /* TIM4 Alternate Function mapping */
77 #define GPIO_AF2_TIM5          ((uint8_t)0x02)  /* TIM5 Alternate Function mapping */
78 #define GPIO_AF2_LPTIM3        ((uint8_t)0x02)  /* LPTIM3 Alternate Function mapping */
79 
80 /**
81   * @brief   AF 3 selection
82   */
83 #define GPIO_AF3_I2C4          ((uint8_t)0x03)  /* I2C4 Alternate Function mapping  */
84 #define GPIO_AF3_OCTOSPI1      ((uint8_t)0x03)  /* OCTOSPI1 Alternate Function mapping  */
85 #define GPIO_AF3_SAI1          ((uint8_t)0x03)  /* SAI1 Alternate Function mapping  */
86 #define GPIO_AF3_SPI2          ((uint8_t)0x03)  /* SPI2 Alternate Function mapping  */
87 #define GPIO_AF3_TIM8          ((uint8_t)0x03)  /* TIM8 Alternate Function mapping  */
88 #define GPIO_AF3_TIM8_COMP1    ((uint8_t)0x03)  /* TIM8/COMP1 Break in Alternate Function mapping  */
89 #define GPIO_AF3_TIM8_COMP2    ((uint8_t)0x03)  /* TIM8/COMP2 Break in Alternate Function mapping  */
90 #define GPIO_AF3_TIM1_COMP1    ((uint8_t)0x03)  /* TIM1/COMP1 Break in Alternate Function mapping  */
91 #define GPIO_AF3_TIM1_COMP2    ((uint8_t)0x03)  /* TIM1/COMP2 Break in Alternate Function mapping  */
92 #define GPIO_AF3_USART2        ((uint8_t)0x03)  /* USART2 Alternate Function mapping  */
93 
94 /**
95   * @brief   AF 4 selection
96   */
97 #define GPIO_AF4_I2C1          ((uint8_t)0x04)  /* I2C1 Alternate Function mapping   */
98 #define GPIO_AF4_I2C2          ((uint8_t)0x04)  /* I2C2 Alternate Function mapping   */
99 #define GPIO_AF4_I2C3          ((uint8_t)0x04)  /* I2C3 Alternate Function mapping   */
100 #define GPIO_AF4_I2C4          ((uint8_t)0x04)  /* I2C4 Alternate Function mapping   */
101 
102 /**
103   * @brief   AF 5 selection
104   */
105 #define GPIO_AF5_DFSDM1        ((uint8_t)0x05)  /* DFSDM1 Alternate Function mapping   */
106 #define GPIO_AF5_I2C4          ((uint8_t)0x05)  /* I2C4 Alternate Function mapping   */
107 #define GPIO_AF5_OCTOSPI1      ((uint8_t)0x05)  /* OCTOSPI1 Alternate Function mapping  */
108 #define GPIO_AF5_SPI1          ((uint8_t)0x05)  /* SPI1 Alternate Function mapping   */
109 #define GPIO_AF5_SPI2          ((uint8_t)0x05)  /* SPI2 Alternate Function mapping   */
110 #define GPIO_AF5_SPI3          ((uint8_t)0x05)  /* SPI3 Alternate Function mapping   */
111 
112 /**
113   * @brief   AF 6 selection
114   */
115 #define GPIO_AF6_DFSDM1        ((uint8_t)0x06)  /* DFSDM1 Alternate Function mapping */
116 #define GPIO_AF6_SPI3          ((uint8_t)0x06)  /* SPI3 Alternate Function mapping   */
117 
118 /**
119   * @brief   AF 7 selection
120   */
121 #define GPIO_AF7_USART1        ((uint8_t)0x07)  /* USART1 Alternate Function mapping */
122 #define GPIO_AF7_USART2        ((uint8_t)0x07)  /* USART2 Alternate Function mapping */
123 #define GPIO_AF7_USART3        ((uint8_t)0x07)  /* USART3 Alternate Function mapping */
124 
125 /**
126   * @brief   AF 8 selection
127   */
128 #define GPIO_AF8_LPUART1       ((uint8_t)0x08)  /* LPUART1 Alternate Function mapping */
129 #define GPIO_AF8_UART4         ((uint8_t)0x08)  /* UART4 Alternate Function mapping   */
130 #define GPIO_AF8_UART5         ((uint8_t)0x08)  /* UART5 Alternate Function mapping   */
131 #define GPIO_AF8_SDMMC1        ((uint8_t)0x08)  /* SDMMC1 Alternate Function mapping  */
132 
133 /**
134   * @brief   AF 9 selection
135   */
136 #define GPIO_AF9_FDCAN1        ((uint8_t)0x09)  /* FDCAN1 Alternate Function mapping */
137 #define GPIO_AF9_TSC           ((uint8_t)0x09)  /* TSC Alternate Function mapping   */
138 
139 /**
140   * @brief   AF 10 selection
141   */
142 #define GPIO_AF10_USB          ((uint8_t)0x0A)  /* USB Alternate Function mapping */
143 #define GPIO_AF10_OCTOSPI1     ((uint8_t)0x0A)  /* OCTOSPI1 Alternate Function mapping */
144 
145 /**
146   * @brief   AF 11 selection
147   */
148 #define GPIO_AF11_UCPD1        ((uint8_t)0x0B)  /*!< UCPD1 Alternate Function mapping */
149 
150 /**
151   * @brief   AF 12 selection
152   */
153 #define GPIO_AF12_COMP1        ((uint8_t)0x0C)  /* COMP1 Alternate Function mapping   */
154 #define GPIO_AF12_COMP2        ((uint8_t)0x0C)  /* COMP2 Alternate Function mapping   */
155 #define GPIO_AF12_FMC          ((uint8_t)0x0C)  /* FMC Alternate Function mapping     */
156 #define GPIO_AF12_TIM1_COMP1   ((uint8_t)0x0C)  /* TIM1/COMP1 Break in Alternate Function mapping  */
157 #define GPIO_AF12_TIM1_COMP2   ((uint8_t)0x0C)  /* TIM1/COMP2 Break in Alternate Function mapping  */
158 #define GPIO_AF12_TIM8_COMP2   ((uint8_t)0x0C)  /* TIM8/COMP2 Break in Alternate Function mapping  */
159 #define GPIO_AF12_SDMMC1       ((uint8_t)0x0C)  /* SDMMC1 Alternate Function mapping  */
160 
161 /**
162   * @brief   AF 13 selection
163   */
164 #define GPIO_AF13_SAI1         ((uint8_t)0x0D)  /* SAI1 Alternate Function mapping */
165 #define GPIO_AF13_SAI2         ((uint8_t)0x0D)  /* SAI2 Alternate Function mapping */
166 #define GPIO_AF13_TIM8_COMP1   ((uint8_t)0x0D)  /* TIM8/COMP1 Break in Alternate Function mapping  */
167 
168 /**
169   * @brief   AF 14 selection
170   */
171 #define GPIO_AF14_LPTIM2       ((uint8_t)0x0E)  /* LPTIM2 Alternate Function mapping */
172 #define GPIO_AF14_TIM2         ((uint8_t)0x0E)  /* TIM2 Alternate Function mapping */
173 #define GPIO_AF14_TIM8_COMP2   ((uint8_t)0x0E)  /* TIM8/COMP2 Break in Alternate Function mapping  */
174 #define GPIO_AF14_TIM15        ((uint8_t)0x0E)  /* TIM15 Alternate Function mapping */
175 #define GPIO_AF14_TIM15_COMP1  ((uint8_t)0x0E)  /* TIM15/COMP1 Alternate Function mapping */
176 #define GPIO_AF14_TIM16        ((uint8_t)0x0E)  /* TIM16 Alternate Function mapping */
177 #define GPIO_AF14_TIM16_COMP1  ((uint8_t)0x0E)  /* TIM16/COMP1 Alternate Function mapping */
178 #define GPIO_AF14_TIM17        ((uint8_t)0x0E)  /* TIM17 Alternate Function mapping */
179 #define GPIO_AF14_TIM17_COMP1  ((uint8_t)0x0E)  /* TIM17/COMP1 Alternate Function mapping */
180 
181 /**
182   * @brief   AF 15 selection
183   */
184 #define GPIO_AF15_EVENTOUT     ((uint8_t)0x0F)  /* EVENTOUT Alternate Function mapping */
185 
186 #define IS_GPIO_AF(AF)   ((AF) <= (uint8_t)0x0F)
187 
188 #endif /* STM32L552xx || STM32L562xx */
189 
190 /**
191   * @}
192   */
193 
194 /**
195   * @}
196   */
197 
198 /* Exported macro ------------------------------------------------------------*/
199 /** @defgroup GPIOEx_Exported_Macros GPIOEx Exported Macros
200   * @{
201   */
202 
203 /** @defgroup GPIOEx_Get_Port_Index GPIOEx Get Port Index
204   * @{
205   */
206 #if defined(STM32L552xx) || defined(STM32L562xx)
207 
208 /* GPIO_Peripheral_Memory_Mapping Peripheral Memory Mapping */
209 #define GPIO_GET_INDEX(__GPIOx__)    (((__GPIOx__) == (GPIOA))? 0UL :\
210                                       ((__GPIOx__) == (GPIOB))? 1UL :\
211                                       ((__GPIOx__) == (GPIOC))? 2UL :\
212                                       ((__GPIOx__) == (GPIOD))? 3UL :\
213                                       ((__GPIOx__) == (GPIOE))? 4UL :\
214                                       ((__GPIOx__) == (GPIOF))? 5UL :\
215                                       ((__GPIOx__) == (GPIOG))? 6UL : 7UL)
216 
217 #endif /* STM32L552xx || STM32L562xx */
218 
219 /**
220   * @}
221   */
222 
223 /**
224   * @}
225   */
226 
227 /* Exported functions --------------------------------------------------------*/
228 
229 /**
230   * @}
231   */
232 
233 /**
234   * @}
235   */
236 
237 #ifdef __cplusplus
238 }
239 #endif
240 
241 #endif /* STM32L5xx_HAL_GPIO_EX_H */
242 
243 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
244