]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_STM32L4_Discovery_GCC_IAR_Keil/ST_Code/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h
Rename STM32Cube to GCC for STM32L4 Discovery projects as GCC is
[freertos] / FreeRTOS / Demo / CORTEX_MPU_STM32L4_Discovery_GCC_IAR_Keil / ST_Code / Drivers / STM32L4xx_HAL_Driver / Inc / stm32l4xx_hal_exti.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l4xx_hal_exti.h\r
4   * @author  MCD Application Team\r
5   * @brief   Header file of EXTI HAL module.\r
6   ******************************************************************************\r
7   * @attention\r
8   *\r
9   * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.\r
10   * All rights reserved.</center></h2>\r
11   *\r
12   * This software component is licensed by ST under BSD 3-Clause license,\r
13   * the "License"; You may not use this file except in compliance with the\r
14   * License. You may obtain a copy of the License at:\r
15   *                        opensource.org/licenses/BSD-3-Clause\r
16   *\r
17   ******************************************************************************\r
18   */\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef STM32L4xx_HAL_EXTI_H\r
22 #define STM32L4xx_HAL_EXTI_H\r
23 \r
24 #ifdef __cplusplus\r
25 extern "C" {\r
26 #endif\r
27 \r
28 /* Includes ------------------------------------------------------------------*/\r
29 #include "stm32l4xx_hal_def.h"\r
30 \r
31 /** @addtogroup STM32L4xx_HAL_Driver\r
32   * @{\r
33   */\r
34 \r
35 /** @defgroup EXTI EXTI\r
36   * @brief EXTI HAL module driver\r
37   * @{\r
38   */\r
39 \r
40 /* Exported types ------------------------------------------------------------*/\r
41 \r
42 /** @defgroup EXTI_Exported_Types EXTI Exported Types\r
43   * @{\r
44   */\r
45 typedef enum\r
46 {\r
47   HAL_EXTI_COMMON_CB_ID          = 0x00U,\r
48   HAL_EXTI_RISING_CB_ID          = 0x01U,\r
49   HAL_EXTI_FALLING_CB_ID         = 0x02U,\r
50 } EXTI_CallbackIDTypeDef;\r
51 \r
52 \r
53 /**\r
54   * @brief  EXTI Handle structure definition\r
55   */\r
56 typedef struct\r
57 {\r
58   uint32_t Line;                    /*!<  Exti line number */\r
59   void (* PendingCallback)(void);   /*!<  Exti pending callback */\r
60 } EXTI_HandleTypeDef;\r
61 \r
62 /**\r
63   * @brief  EXTI Configuration structure definition\r
64   */\r
65 typedef struct\r
66 {\r
67   uint32_t Line;      /*!< The Exti line to be configured. This parameter\r
68                            can be a value of @ref EXTI_Line */\r
69   uint32_t Mode;      /*!< The Exit Mode to be configured for a core.\r
70                            This parameter can be a combination of @ref EXTI_Mode */\r
71   uint32_t Trigger;   /*!< The Exti Trigger to be configured. This parameter\r
72                            can be a value of @ref EXTI_Trigger */\r
73   uint32_t GPIOSel;   /*!< The Exti GPIO multiplexer selection to be configured.\r
74                            This parameter is only possible for line 0 to 15. It\r
75                            can be a value of @ref EXTI_GPIOSel */\r
76 } EXTI_ConfigTypeDef;\r
77 \r
78 /**\r
79   * @}\r
80   */\r
81 \r
82 /* Exported constants --------------------------------------------------------*/\r
83 /** @defgroup EXTI_Exported_Constants EXTI Exported Constants\r
84   * @{\r
85   */\r
86 \r
87 /** @defgroup EXTI_Line  EXTI Line\r
88   * @{\r
89   */\r
90 #if defined(STM32L412xx) || defined(STM32L422xx)\r
91 \r
92 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
93 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
94 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
95 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
96 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
97 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
98 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
99 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
100 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
101 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
102 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
103 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
104 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
105 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
106 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
107 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
108 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
109 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
110 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
111 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
112 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
113 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
114 #define EXTI_LINE_22                        (EXTI_RESERVED | EXTI_REG1              | 0x16u)\r
115 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
116 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
117 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
118 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
119 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
120 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
121 #define EXTI_LINE_29                        (EXTI_RESERVED | EXTI_REG1              | 0x1Du)\r
122 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
123 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
124 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
125 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
126 #define EXTI_LINE_34                        (EXTI_RESERVED | EXTI_REG2              | 0x02u)\r
127 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
128 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
129 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
130 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
131 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
132 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
133 \r
134 #endif /* STM32L412xx || STM32L422xx */\r
135 \r
136 #if defined(STM32L431xx)\r
137 \r
138 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
139 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
140 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
141 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
142 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
143 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
144 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
145 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
146 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
147 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
148 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
149 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
150 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
151 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
152 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
153 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
154 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
155 #define EXTI_LINE_17                        (EXTI_RESERVED | EXTI_REG1              | 0x11u)\r
156 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
157 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
158 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
159 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
160 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
161 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
162 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
163 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
164 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
165 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
166 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
167 #define EXTI_LINE_29                        (EXTI_RESERVED | EXTI_REG1              | 0x1Du)\r
168 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
169 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
170 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
171 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
172 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
173 #define EXTI_LINE_35                        (EXTI_RESERVED | EXTI_REG2              | 0x03u)\r
174 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
175 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
176 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
177 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
178 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
179 \r
180 #endif /* STM32L431xx */\r
181 \r
182 #if defined(STM32L432xx) || defined(STM32L442xx)\r
183 \r
184 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
185 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
186 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
187 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
188 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
189 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
190 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
191 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
192 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
193 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
194 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
195 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
196 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
197 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
198 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
199 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
200 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
201 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
202 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
203 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
204 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
205 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
206 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
207 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
208 #define EXTI_LINE_24                        (EXTI_RESERVED | EXTI_REG1              | 0x18u)\r
209 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
210 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
211 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
212 #define EXTI_LINE_28                        (EXTI_RESERVED | EXTI_REG1              | 0x1Cu)\r
213 #define EXTI_LINE_29                        (EXTI_RESERVED | EXTI_REG1              | 0x1Du)\r
214 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
215 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
216 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
217 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
218 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
219 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
220 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
221 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
222 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
223 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x07u)\r
224 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
225 \r
226 #endif /* STM32L432xx || STM32L442xx */\r
227 \r
228 #if defined(STM32L433xx) || defined(STM32L443xx)\r
229 \r
230 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
231 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
232 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
233 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
234 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
235 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
236 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
237 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
238 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
239 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
240 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
241 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
242 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
243 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
244 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
245 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
246 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
247 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
248 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
249 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
250 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
251 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
252 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
253 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
254 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
255 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
256 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
257 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
258 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
259 #define EXTI_LINE_29                        (EXTI_RESERVED | EXTI_REG1              | 0x1Du)\r
260 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
261 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
262 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
263 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
264 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
265 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
266 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
267 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
268 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
269 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x07u)\r
270 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
271 \r
272 #endif /* STM32L433xx || STM32L443xx */\r
273 \r
274 #if defined(STM32L451xx)\r
275 \r
276 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
277 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
278 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
279 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
280 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
281 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
282 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
283 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
284 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
285 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
286 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
287 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
288 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
289 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
290 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
291 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
292 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
293 #define EXTI_LINE_17                        (EXTI_RESERVED | EXTI_REG1              | 0x11u)\r
294 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
295 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
296 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
297 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
298 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
299 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
300 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
301 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
302 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
303 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
304 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
305 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
306 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
307 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
308 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
309 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
310 #define EXTI_LINE_34                        (EXTI_RESERVED | EXTI_REG2              | 0x02u)\r
311 #define EXTI_LINE_35                        (EXTI_RESERVED | EXTI_REG2              | 0x03u)\r
312 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
313 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
314 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
315 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
316 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x08u)\r
317 \r
318 #endif /* STM32L451xx */\r
319 \r
320 #if defined(STM32L452xx) || defined(STM32L462xx)\r
321 \r
322 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
323 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
324 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
325 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
326 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
327 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
328 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
329 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
330 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
331 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
332 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
333 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
334 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
335 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
336 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
337 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
338 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
339 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
340 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
341 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
342 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
343 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
344 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
345 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
346 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
347 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
348 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
349 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
350 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
351 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
352 #define EXTI_LINE_30                        (EXTI_RESERVED | EXTI_REG1              | 0x1Eu)\r
353 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
354 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
355 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
356 #define EXTI_LINE_34                        (EXTI_RESERVED | EXTI_REG2              | 0x02u)\r
357 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
358 #define EXTI_LINE_36                        (EXTI_RESERVED | EXTI_REG2              | 0x04u)\r
359 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
360 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
361 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
362 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x08u)\r
363 \r
364 #endif /* STM32L452xx || STM32L462xx */\r
365 \r
366 #if defined(STM32L471xx)\r
367 \r
368 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
369 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
370 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
371 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
372 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
373 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
374 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
375 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
376 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
377 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
378 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
379 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
380 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
381 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
382 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
383 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
384 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
385 #define EXTI_LINE_17                        (EXTI_RESERVED | EXTI_REG1              | 0x11u)\r
386 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
387 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
388 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
389 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
390 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
391 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
392 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
393 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
394 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
395 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
396 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
397 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
398 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Eu)\r
399 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
400 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
401 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
402 #define EXTI_LINE_34                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
403 #define EXTI_LINE_35                        (EXTI_RESERVED | EXTI_REG2              | 0x03u)\r
404 #define EXTI_LINE_36                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x04u)\r
405 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
406 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
407 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
408 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
409 \r
410 #endif /* STM32L471xx */\r
411 \r
412 #if defined(STM32L475xx) || defined(STM32L485xx)\r
413 \r
414 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
415 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
416 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
417 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
418 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
419 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
420 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
421 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
422 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
423 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
424 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
425 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
426 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
427 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
428 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
429 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
430 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
431 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
432 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
433 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
434 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
435 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
436 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
437 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
438 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
439 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
440 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
441 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
442 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
443 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
444 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Eu)\r
445 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
446 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
447 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
448 #define EXTI_LINE_34                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
449 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
450 #define EXTI_LINE_36                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x04u)\r
451 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
452 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
453 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
454 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
455 \r
456 #endif /* STM32L475xx || STM32L485xx  */\r
457 \r
458 #if defined(STM32L476xx) || defined(STM32L486xx)\r
459 \r
460 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
461 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
462 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
463 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
464 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
465 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
466 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
467 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
468 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
469 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
470 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
471 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
472 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
473 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
474 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
475 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
476 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
477 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
478 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
479 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
480 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
481 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
482 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
483 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
484 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
485 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
486 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
487 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
488 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
489 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
490 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Eu)\r
491 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
492 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
493 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
494 #define EXTI_LINE_34                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
495 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
496 #define EXTI_LINE_36                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x04u)\r
497 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
498 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
499 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x07u)\r
500 #define EXTI_LINE_40                        (EXTI_RESERVED | EXTI_REG2              | 0x08u)\r
501 \r
502 #endif /*  STM32L476xx || STM32L486xx */\r
503 \r
504 #if defined(STM32L496xx) || defined(STM32L4A6xx)\r
505 \r
506 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
507 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
508 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
509 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
510 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
511 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
512 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
513 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
514 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
515 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
516 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
517 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
518 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
519 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
520 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
521 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
522 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
523 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
524 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
525 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
526 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
527 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
528 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
529 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
530 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
531 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
532 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
533 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
534 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
535 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
536 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Eu)\r
537 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
538 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
539 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
540 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x02u)\r
541 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
542 #define EXTI_LINE_36                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x04u)\r
543 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
544 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
545 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x07u)\r
546 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x08u)\r
547 \r
548 #endif /*  STM32L496xx || STM32L4A6xx */\r
549 \r
550 #if defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)\r
551 \r
552 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x00u)\r
553 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x01u)\r
554 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x02u)\r
555 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x03u)\r
556 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x04u)\r
557 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x05u)\r
558 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x06u)\r
559 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x07u)\r
560 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x08u)\r
561 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x09u)\r
562 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Au)\r
563 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Bu)\r
564 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Cu)\r
565 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Du)\r
566 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Eu)\r
567 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_REG1 | EXTI_EVENT | 0x0Fu)\r
568 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x10u)\r
569 #define EXTI_LINE_17                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x11u)\r
570 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x12u)\r
571 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x13u)\r
572 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x14u)\r
573 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x15u)\r
574 #define EXTI_LINE_22                        (EXTI_CONFIG   | EXTI_REG1 | EXTI_EVENT | 0x16u)\r
575 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x17u)\r
576 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x18u)\r
577 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x19u)\r
578 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Au)\r
579 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Bu)\r
580 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Cu)\r
581 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Du)\r
582 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Eu)\r
583 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_REG1 | EXTI_EVENT | 0x1Fu)\r
584 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x00u)\r
585 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x01u)\r
586 #define EXTI_LINE_34                        (EXTI_RESERVED | EXTI_REG2              | 0x02u)\r
587 #define EXTI_LINE_35                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x03u)\r
588 #define EXTI_LINE_36                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x04u)\r
589 #define EXTI_LINE_37                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x05u)\r
590 #define EXTI_LINE_38                        (EXTI_CONFIG   | EXTI_REG2 | EXTI_EVENT | 0x06u)\r
591 #define EXTI_LINE_39                        (EXTI_RESERVED | EXTI_REG2              | 0x07u)\r
592 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_REG2 | EXTI_EVENT | 0x08u)\r
593 \r
594 #endif /* STM32L4R5xx || STM32L4R7xx || STM32L4R9xx || STM32L4S5xx || STM32L4S7xx || STM32L4S9xx */\r
595 \r
596 /**\r
597   * @}\r
598   */\r
599 \r
600 /** @defgroup EXTI_Mode  EXTI Mode\r
601   * @{\r
602   */\r
603 #define EXTI_MODE_NONE                      0x00000000u\r
604 #define EXTI_MODE_INTERRUPT                 0x00000001u\r
605 #define EXTI_MODE_EVENT                     0x00000002u\r
606 /**\r
607   * @}\r
608   */\r
609 \r
610 /** @defgroup EXTI_Trigger  EXTI Trigger\r
611   * @{\r
612   */\r
613 #define EXTI_TRIGGER_NONE                   0x00000000u\r
614 #define EXTI_TRIGGER_RISING                 0x00000001u\r
615 #define EXTI_TRIGGER_FALLING                0x00000002u\r
616 #define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)\r
617 /**\r
618   * @}\r
619   */\r
620 \r
621 /** @defgroup EXTI_GPIOSel  EXTI GPIOSel\r
622   * @brief\r
623   * @{\r
624   */\r
625 #define EXTI_GPIOA                          0x00000000u\r
626 #define EXTI_GPIOB                          0x00000001u\r
627 #define EXTI_GPIOC                          0x00000002u\r
628 #define EXTI_GPIOD                          0x00000003u\r
629 #define EXTI_GPIOE                          0x00000004u\r
630 #define EXTI_GPIOF                          0x00000005u\r
631 #define EXTI_GPIOG                          0x00000005u\r
632 #define EXTI_GPIOH                          0x00000007u\r
633 #define EXTI_GPIOI                          0x00000008u\r
634 /**\r
635   * @}\r
636   */\r
637 \r
638 /**\r
639   * @}\r
640   */\r
641 \r
642 /* Exported macro ------------------------------------------------------------*/\r
643 /** @defgroup EXTI_Exported_Macros EXTI Exported Macros\r
644   * @{\r
645   */\r
646 \r
647 /**\r
648   * @}\r
649   */\r
650 \r
651 /* Private constants --------------------------------------------------------*/\r
652 /** @defgroup EXTI_Private_Constants EXTI Private Constants\r
653   * @{\r
654   */\r
655 /**\r
656   * @brief  EXTI Line property definition\r
657   */\r
658 #define EXTI_PROPERTY_SHIFT                  24u\r
659 #define EXTI_DIRECT                         (0x01uL << EXTI_PROPERTY_SHIFT)\r
660 #define EXTI_CONFIG                         (0x02uL << EXTI_PROPERTY_SHIFT)\r
661 #define EXTI_GPIO                           ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)\r
662 #define EXTI_RESERVED                       (0x08uL << EXTI_PROPERTY_SHIFT)\r
663 #define EXTI_PROPERTY_MASK                  (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO)\r
664 \r
665 /**\r
666   * @brief  EXTI Event presence definition\r
667   */\r
668 #define EXTI_EVENT_PRESENCE_SHIFT           28u\r
669 #define EXTI_EVENT                          (0x01uL << EXTI_EVENT_PRESENCE_SHIFT)\r
670 #define EXTI_EVENT_PRESENCE_MASK            (EXTI_EVENT)\r
671 \r
672 /**\r
673   * @brief  EXTI Register and bit usage\r
674   */\r
675 #define EXTI_REG_SHIFT                      16u\r
676 #define EXTI_REG1                           (0x00uL << EXTI_REG_SHIFT)\r
677 #define EXTI_REG2                           (0x01uL << EXTI_REG_SHIFT)\r
678 #define EXTI_REG_MASK                       (EXTI_REG1 | EXTI_REG2)\r
679 #define EXTI_PIN_MASK                       0x0000001Fu\r
680 \r
681 /**\r
682   * @brief  EXTI Mask for interrupt & event mode\r
683   */\r
684 #define EXTI_MODE_MASK                      (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)\r
685 \r
686 /**\r
687   * @brief  EXTI Mask for trigger possibilities\r
688   */\r
689 #define EXTI_TRIGGER_MASK                   (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)\r
690 \r
691 /**\r
692   * @brief  EXTI Line number\r
693   */\r
694 #define EXTI_LINE_NB                        41u\r
695 \r
696 /**\r
697   * @}\r
698   */\r
699 \r
700 /* Private macros ------------------------------------------------------------*/\r
701 /** @defgroup EXTI_Private_Macros EXTI Private Macros\r
702   * @{\r
703   */\r
704 #define IS_EXTI_LINE(__LINE__)          ((((__LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_EVENT_PRESENCE_MASK | EXTI_REG_MASK | EXTI_PIN_MASK)) == 0x00u) && \\r
705                                         ((((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT)   || \\r
706                                          (((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG)   || \\r
707                                          (((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO))    && \\r
708                                          (((__LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK))      < \\r
709                                          (((EXTI_LINE_NB / 32u) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32u))))\r
710 \r
711 #define IS_EXTI_MODE(__LINE__)          ((((__LINE__) & EXTI_MODE_MASK) != 0x00u) && \\r
712                                          (((__LINE__) & ~EXTI_MODE_MASK) == 0x00u))\r
713 \r
714 #define IS_EXTI_TRIGGER(__LINE__)       (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)\r
715 \r
716 #define IS_EXTI_PENDING_EDGE(__LINE__)  ((__LINE__) == EXTI_TRIGGER_RISING_FALLING)\r
717 \r
718 #define IS_EXTI_CONFIG_LINE(__LINE__)   (((__LINE__) & EXTI_CONFIG) != 0x00u)\r
719 \r
720 #if defined(STM32L412xx) || defined(STM32L422xx)\r
721 \r
722 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
723                                          ((__PORT__) == EXTI_GPIOB) || \\r
724                                          ((__PORT__) == EXTI_GPIOC) || \\r
725                                          ((__PORT__) == EXTI_GPIOD) || \\r
726                                          ((__PORT__) == EXTI_GPIOH))\r
727 \r
728 #endif /* STM32L412xx || STM32L422xx */\r
729 \r
730 #if defined(STM32L431xx) || defined(STM32L433xx) || defined(STM32L443xx)\r
731 \r
732 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
733                                          ((__PORT__) == EXTI_GPIOB) || \\r
734                                          ((__PORT__) == EXTI_GPIOC) || \\r
735                                          ((__PORT__) == EXTI_GPIOD) || \\r
736                                          ((__PORT__) == EXTI_GPIOE) || \\r
737                                          ((__PORT__) == EXTI_GPIOH))\r
738 \r
739 #endif /* STM32L431xx || STM32L433xx || STM32L443xx */\r
740 \r
741 #if defined(STM32L432xx) || defined(STM32L442xx)\r
742 \r
743 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
744                                          ((__PORT__) == EXTI_GPIOB) || \\r
745                                          ((__PORT__) == EXTI_GPIOC) || \\r
746                                          ((__PORT__) == EXTI_GPIOH))\r
747 \r
748 #endif /* STM32L432xx || STM32L442xx */\r
749 \r
750 #if defined(STM32L451xx) || defined(STM32L452xx) || defined(STM32L462xx)\r
751 \r
752 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
753                                          ((__PORT__) == EXTI_GPIOB) || \\r
754                                          ((__PORT__) == EXTI_GPIOC) || \\r
755                                          ((__PORT__) == EXTI_GPIOD) || \\r
756                                          ((__PORT__) == EXTI_GPIOE) || \\r
757                                          ((__PORT__) == EXTI_GPIOH))\r
758 \r
759 #endif /* STM32L451xx || STM32L452xx || STM32L462xx */\r
760 \r
761 #if defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx)\r
762 \r
763 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
764                                          ((__PORT__) == EXTI_GPIOB) || \\r
765                                          ((__PORT__) == EXTI_GPIOC) || \\r
766                                          ((__PORT__) == EXTI_GPIOD) || \\r
767                                          ((__PORT__) == EXTI_GPIOE) || \\r
768                                          ((__PORT__) == EXTI_GPIOF) || \\r
769                                          ((__PORT__) == EXTI_GPIOG) || \\r
770                                          ((__PORT__) == EXTI_GPIOH))\r
771 \r
772 #endif /* STM32L471xx || STM32L475xx || STM32L476xx || STM32L485xx || STM32L486xx */\r
773 \r
774 #if defined(STM32L496xx) || defined(STM32L4A6xx)\r
775 \r
776 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
777                                          ((__PORT__) == EXTI_GPIOB) || \\r
778                                          ((__PORT__) == EXTI_GPIOC) || \\r
779                                          ((__PORT__) == EXTI_GPIOD) || \\r
780                                          ((__PORT__) == EXTI_GPIOE) || \\r
781                                          ((__PORT__) == EXTI_GPIOF) || \\r
782                                          ((__PORT__) == EXTI_GPIOG) || \\r
783                                          ((__PORT__) == EXTI_GPIOH) || \\r
784                                          ((__PORT__) == EXTI_GPIOI))\r
785 \r
786 #endif /* STM32L496xx || STM32L4A6xx */\r
787 \r
788 #if defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)\r
789 \r
790 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \\r
791                                          ((__PORT__) == EXTI_GPIOB) || \\r
792                                          ((__PORT__) == EXTI_GPIOC) || \\r
793                                          ((__PORT__) == EXTI_GPIOD) || \\r
794                                          ((__PORT__) == EXTI_GPIOE) || \\r
795                                          ((__PORT__) == EXTI_GPIOF) || \\r
796                                          ((__PORT__) == EXTI_GPIOG) || \\r
797                                          ((__PORT__) == EXTI_GPIOH) || \\r
798                                          ((__PORT__) == EXTI_GPIOI))\r
799 \r
800 #endif /* STM32L4R5xx || STM32L4R7xx || STM32L4R9xx || STM32L4S5xx || STM32L4S7xx || STM32L4S9xx */\r
801 \r
802 #define IS_EXTI_GPIO_PIN(__PIN__)       ((__PIN__) < 16u)\r
803 /**\r
804   * @}\r
805   */\r
806 \r
807 \r
808 /* Exported functions --------------------------------------------------------*/\r
809 /** @defgroup EXTI_Exported_Functions EXTI Exported Functions\r
810   * @brief    EXTI Exported Functions\r
811   * @{\r
812   */\r
813 \r
814 /** @defgroup EXTI_Exported_Functions_Group1 Configuration functions\r
815   * @brief    Configuration functions\r
816   * @{\r
817   */\r
818 /* Configuration functions ****************************************************/\r
819 HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\r
820 HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);\r
821 HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);\r
822 HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));\r
823 HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);\r
824 /**\r
825   * @}\r
826   */\r
827 \r
828 /** @defgroup EXTI_Exported_Functions_Group2 IO operation functions\r
829   * @brief    IO operation functions\r
830   * @{\r
831   */\r
832 /* IO operation functions *****************************************************/\r
833 void              HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);\r
834 uint32_t          HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\r
835 void              HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);\r
836 void              HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);\r
837 \r
838 /**\r
839   * @}\r
840   */\r
841 \r
842 /**\r
843   * @}\r
844   */\r
845 \r
846 /**\r
847   * @}\r
848   */\r
849 \r
850 /**\r
851   * @}\r
852   */\r
853 \r
854 #ifdef __cplusplus\r
855 }\r
856 #endif\r
857 \r
858 #endif /* STM32L4xx_HAL_EXTI_H */\r
859 \r
860 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r