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