1 /**
2   ******************************************************************************
3   * @file    stm32l1xx_hal_gpio_ex.h
4   * @author  MCD Application Team
5   * @brief   Header file of GPIO HAL Extension module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2017 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software is licensed under terms that can be found in the LICENSE file
13   * in the root directory of this software component.
14   * If no LICENSE file comes with this software, it is provided AS-IS.
15   *
16   ******************************************************************************
17   */
18 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef __STM32L1xx_HAL_GPIO_EX_H
21 #define __STM32L1xx_HAL_GPIO_EX_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32l1xx_hal_def.h"
29 
30 /** @addtogroup STM32L1xx_HAL_Driver
31   * @{
32   */
33 
34 /** @defgroup GPIOEx GPIOEx
35   * @{
36   */
37 
38 /* Exported types ------------------------------------------------------------*/
39 /* Exported constants --------------------------------------------------------*/
40 /** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants
41   * @{
42   */
43 
44 /** @defgroup GPIOEx_Alternate_function_selection GPIOEx Alternate function selection
45   * @{
46   */
47 
48 /* AF 0 selection */
49 #define GPIO_AF0_MCO           ((uint8_t)0x00)  /*!< MCO Alternate Function mapping                 */
50 #define GPIO_AF0_TAMPER        ((uint8_t)0x00)  /*!< TAMPER  Alternate Function mapping             */
51 #define GPIO_AF0_SWJ           ((uint8_t)0x00)  /*!< SWJ (SWD and JTAG) Alternate Function mapping  */
52 #define GPIO_AF0_TRACE         ((uint8_t)0x00)  /*!< TRACE Alternate Function mapping               */
53 #define GPIO_AF0_RTC_50Hz      ((uint8_t)0x00)  /*!< RTC_OUT Alternate Function mapping             */
54 
55 /* AF 1 selection */
56 #define GPIO_AF1_TIM2           ((uint8_t)0x01)  /*!< TIM2 Alternate Function mapping */
57 
58 /* AF 2 selection */
59 #define GPIO_AF2_TIM3           ((uint8_t)0x02)  /*!< TIM3 Alternate Function mapping */
60 #define GPIO_AF2_TIM4           ((uint8_t)0x02)  /*!< TIM4 Alternate Function mapping */
61 #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC)
62 #define GPIO_AF2_TIM5           ((uint8_t)0x02)  /*!< TIM5 Alternate Function mapping */
63 
64 #endif /*  STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD ...STM32L151xC */
65 
66 /* AF 3 selection */
67 #define GPIO_AF3_TIM9            ((uint8_t)0x03)  /*!< TIM9 Alternate Function mapping */
68 #define GPIO_AF3_TIM10           ((uint8_t)0x03)  /*!< TIM10 Alternate Function mapping */
69 #define GPIO_AF3_TIM11           ((uint8_t)0x03)  /*!< TIM11 Alternate Function mapping */
70 
71 
72 /* AF 4 selection */
73 #define GPIO_AF4_I2C1          ((uint8_t)0x04)  /*!< I2C1 Alternate Function mapping */
74 #define GPIO_AF4_I2C2          ((uint8_t)0x04)  /*!< I2C2 Alternate Function mapping */
75 
76 /* AF 5 selection */
77 #define GPIO_AF5_SPI1          ((uint8_t)0x05)  /*!< SPI1/I2S1 Alternate Function mapping      */
78 #define GPIO_AF5_SPI2          ((uint8_t)0x05)  /*!< SPI2/I2S2 Alternate Function mapping */
79 
80 /* AF 6 selection */
81 #if defined (STM32L100xC) || defined (STM32L151xC) || defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L151xE) || defined (STM32L151xDX) ||\
82     defined (STM32L152xC) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\
83     defined (STM32L162xC) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX)
84 
85 #define GPIO_AF6_SPI3          ((uint8_t)0x06)  /*!< SPI3/I2S3 Alternate Function mapping */
86 
87 #endif /* STM32L100xC || STM32L151xC || (...) || STM32L162xD || STM32L162xE || STM32L162xDX */
88 
89 
90 /* AF 7 selection */
91 #define GPIO_AF7_USART1        ((uint8_t)0x07)  /*!< USART1 Alternate Function mapping  */
92 #define GPIO_AF7_USART2        ((uint8_t)0x07)  /*!< USART2 Alternate Function mapping  */
93 #define GPIO_AF7_USART3        ((uint8_t)0x07)  /*!< USART3 Alternate Function mapping  */
94 
95 /* AF 8 selection */
96 #if defined (STM32L151xD) || defined (STM32L151xE) || defined (STM32L151xDX) ||\
97     defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\
98     defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX)
99 
100 #define GPIO_AF8_UART4        ((uint8_t)0x08)  /*!< UART4 Alternate Function mapping  */
101 #define GPIO_AF8_UART5        ((uint8_t)0x08)  /*!< UART5 Alternate Function mapping  */
102 
103 #endif /* STM32L151xD || STM32L151xE || STM32L151xDX || STM32L152xD || STM32L 152xE || STM32L162xD || STM32L162xE || STM32L162xDX */
104 
105 
106 /* AF 9 selection */
107 
108 /* AF 10 selection */
109 
110 /* AF 11 selection */
111 #if defined (STM32L100xB) || defined (STM32L100xBA) || defined (STM32L100xC) ||\
112     defined (STM32L152xB) || defined (STM32L152xBA) || defined (STM32L152xC) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\
113     defined (STM32L162xC) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX)
114 
115 #define GPIO_AF11_LCD            ((uint8_t)0x0B)  /*!< LCD Alternate Function mapping */
116 
117 #endif /* STM32L100xB || STM32L100xBA || STM32L100xC || (...) || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
118 
119 /* AF 12 selection */
120 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
121 
122 #define GPIO_AF12_FSMC            ((uint8_t)0x0C)  /*!< FSMC Alternate Function mapping */
123 #define GPIO_AF12_SDIO            ((uint8_t)0x0C)  /*!< SDIO Alternate Function mapping */
124 
125 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
126 /* AF 13 selection */
127 
128 /* AF 14 selection */
129 #define GPIO_AF14_TIM_IC1         ((uint8_t)0x0E)  /*!< TIMER INPUT CAPTURE Alternate Function mapping */
130 #define GPIO_AF14_TIM_IC2         ((uint8_t)0x0E)  /*!< TIMER INPUT CAPTURE Alternate Function mapping */
131 #define GPIO_AF14_TIM_IC3         ((uint8_t)0x0E)  /*!< TIMER INPUT CAPTURE Alternate Function mapping */
132 #define GPIO_AF14_TIM_IC4         ((uint8_t)0x0E)  /*!< TIMER INPUT CAPTURE Alternate Function mapping */
133 
134 /* AF 15 selection */
135 #define GPIO_AF15_EVENTOUT      ((uint8_t)0x0F)  /*!< EVENTOUT Alternate Function mapping */
136 
137 /**
138   * @}
139   */
140 
141 /**
142   * @}
143   */
144 
145 /** @defgroup GPIOEx_Private_Macros GPIOEx Private Macros
146   * @{
147   */
148 
149 
150 #define IS_GPIO_AF(AF)   ((AF) <= (uint8_t)0x0F)
151 
152 
153 #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
154 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
155                                    ((__GPIOx__) == (GPIOB))? 1U :\
156                                    ((__GPIOx__) == (GPIOC))? 2U :\
157                                    ((__GPIOx__) == (GPIOD))? 3U :\
158                                    ((__GPIOx__) == (GPIOE))? 4U :\
159                                    ((__GPIOx__) == (GPIOH))? 5U :\
160                                    ((__GPIOx__) == (GPIOF))? 6U : 7U)
161 #endif
162 
163 #if defined (STM32L151xB) || defined (STM32L151xBA) || defined (STM32L151xC) || defined (STM32L152xB) || defined (STM32L152xBA) || defined (STM32L152xC) || defined (STM32L162xC)
164 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
165                                    ((__GPIOx__) == (GPIOB))? 1U :\
166                                    ((__GPIOx__) == (GPIOC))? 2U :\
167                                    ((__GPIOx__) == (GPIOD))? 3U :\
168                                    ((__GPIOx__) == (GPIOE))? 4U : 5U)
169 #endif
170 
171 #if defined (STM32L100xB) || defined (STM32L100xBA) || defined (STM32L100xC)
172 #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
173                                    ((__GPIOx__) == (GPIOB))? 1U :\
174                                    ((__GPIOx__) == (GPIOC))? 2U :\
175                                    ((__GPIOx__) == (GPIOD))? 3U : 5U)
176 #endif
177 
178 
179 
180 /**
181   * @}
182   */
183 
184 
185 
186 /* Exported macro ------------------------------------------------------------*/
187 /* Exported functions --------------------------------------------------------*/
188 
189 
190 /**
191   * @}
192   */
193 
194 /**
195   * @}
196   */
197 
198 #ifdef __cplusplus
199 }
200 #endif
201 
202 #endif /* __STM32L1xx_HAL_GPIO_EX_H */
203 
204