1 /**
2   ******************************************************************************
3   * @file    stm32g4xx_ll_exti.h
4   * @author  MCD Application Team
5   * @brief   Header file of EXTI LL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2019 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 __STM32G4xx_LL_EXTI_H
21 #define __STM32G4xx_LL_EXTI_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32g4xx.h"
29 
30 /** @addtogroup STM32G4xx_LL_Driver
31   * @{
32   */
33 
34 #if defined (EXTI)
35 
36 /** @defgroup EXTI_LL EXTI
37   * @{
38   */
39 
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /* Private Macros ------------------------------------------------------------*/
44 #if defined(USE_FULL_LL_DRIVER)
45 /** @defgroup EXTI_LL_Private_Macros EXTI Private Macros
46   * @{
47   */
48 /**
49   * @}
50   */
51 #endif /*USE_FULL_LL_DRIVER*/
52 /* Exported types ------------------------------------------------------------*/
53 #if defined(USE_FULL_LL_DRIVER)
54 /** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure
55   * @{
56   */
57 typedef struct
58 {
59 
60   uint32_t Line_0_31;           /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31
61                                      This parameter can be any combination of @ref EXTI_LL_EC_LINE */
62 
63   uint32_t Line_32_63;          /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 32 to 63
64                                      This parameter can be any combination of @ref EXTI_LL_EC_LINE */
65 
66   FunctionalState LineCommand;  /*!< Specifies the new state of the selected EXTI lines.
67                                      This parameter can be set either to ENABLE or DISABLE */
68 
69   uint8_t Mode;                 /*!< Specifies the mode for the EXTI lines.
70                                      This parameter can be a value of @ref EXTI_LL_EC_MODE. */
71 
72   uint8_t Trigger;              /*!< Specifies the trigger signal active edge for the EXTI lines.
73                                      This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */
74 } LL_EXTI_InitTypeDef;
75 
76 /**
77   * @}
78   */
79 #endif /*USE_FULL_LL_DRIVER*/
80 
81 /* Exported constants --------------------------------------------------------*/
82 /** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants
83   * @{
84   */
85 
86 /** @defgroup EXTI_LL_EC_LINE LINE
87   * @{
88   */
89 #define LL_EXTI_LINE_0                 EXTI_IMR1_IM0           /*!< Extended line 0 */
90 #define LL_EXTI_LINE_1                 EXTI_IMR1_IM1           /*!< Extended line 1 */
91 #define LL_EXTI_LINE_2                 EXTI_IMR1_IM2           /*!< Extended line 2 */
92 #define LL_EXTI_LINE_3                 EXTI_IMR1_IM3           /*!< Extended line 3 */
93 #define LL_EXTI_LINE_4                 EXTI_IMR1_IM4           /*!< Extended line 4 */
94 #define LL_EXTI_LINE_5                 EXTI_IMR1_IM5           /*!< Extended line 5 */
95 #define LL_EXTI_LINE_6                 EXTI_IMR1_IM6           /*!< Extended line 6 */
96 #define LL_EXTI_LINE_7                 EXTI_IMR1_IM7           /*!< Extended line 7 */
97 #define LL_EXTI_LINE_8                 EXTI_IMR1_IM8           /*!< Extended line 8 */
98 #define LL_EXTI_LINE_9                 EXTI_IMR1_IM9           /*!< Extended line 9 */
99 #define LL_EXTI_LINE_10                EXTI_IMR1_IM10          /*!< Extended line 10 */
100 #define LL_EXTI_LINE_11                EXTI_IMR1_IM11          /*!< Extended line 11 */
101 #define LL_EXTI_LINE_12                EXTI_IMR1_IM12          /*!< Extended line 12 */
102 #define LL_EXTI_LINE_13                EXTI_IMR1_IM13          /*!< Extended line 13 */
103 #define LL_EXTI_LINE_14                EXTI_IMR1_IM14          /*!< Extended line 14 */
104 #define LL_EXTI_LINE_15                EXTI_IMR1_IM15          /*!< Extended line 15 */
105 #if defined(EXTI_IMR1_IM16)
106 #define LL_EXTI_LINE_16                EXTI_IMR1_IM16          /*!< Extended line 16 */
107 #endif /* EXTI_IMR1_IM16 */
108 #define LL_EXTI_LINE_17                EXTI_IMR1_IM17          /*!< Extended line 17 */
109 #if defined(EXTI_IMR1_IM18)
110 #define LL_EXTI_LINE_18                EXTI_IMR1_IM18          /*!< Extended line 18 */
111 #endif /* EXTI_IMR1_IM18 */
112 #define LL_EXTI_LINE_19                EXTI_IMR1_IM19          /*!< Extended line 19 */
113 #if defined(EXTI_IMR1_IM20)
114 #define LL_EXTI_LINE_20                EXTI_IMR1_IM20          /*!< Extended line 20 */
115 #endif /* EXTI_IMR1_IM20 */
116 #if defined(EXTI_IMR1_IM21)
117 #define LL_EXTI_LINE_21                EXTI_IMR1_IM21          /*!< Extended line 21 */
118 #endif /* EXTI_IMR1_IM21 */
119 #if defined(EXTI_IMR1_IM22)
120 #define LL_EXTI_LINE_22                EXTI_IMR1_IM22          /*!< Extended line 22 */
121 #endif /* EXTI_IMR1_IM22 */
122 #define LL_EXTI_LINE_23                EXTI_IMR1_IM23          /*!< Extended line 23 */
123 #if defined(EXTI_IMR1_IM24)
124 #define LL_EXTI_LINE_24                EXTI_IMR1_IM24          /*!< Extended line 24 */
125 #endif /* EXTI_IMR1_IM24 */
126 #if defined(EXTI_IMR1_IM25)
127 #define LL_EXTI_LINE_25                EXTI_IMR1_IM25          /*!< Extended line 25 */
128 #endif /* EXTI_IMR1_IM25 */
129 #if defined(EXTI_IMR1_IM26)
130 #define LL_EXTI_LINE_26                EXTI_IMR1_IM26          /*!< Extended line 26 */
131 #endif /* EXTI_IMR1_IM26 */
132 #if defined(EXTI_IMR1_IM27)
133 #define LL_EXTI_LINE_27                EXTI_IMR1_IM27          /*!< Extended line 27 */
134 #endif /* EXTI_IMR1_IM27 */
135 #if defined(EXTI_IMR1_IM28)
136 #define LL_EXTI_LINE_28                EXTI_IMR1_IM28          /*!< Extended line 28 */
137 #endif /* EXTI_IMR1_IM28 */
138 #if defined(EXTI_IMR1_IM29)
139 #define LL_EXTI_LINE_29                EXTI_IMR1_IM29          /*!< Extended line 29 */
140 #endif /* EXTI_IMR1_IM29 */
141 #if defined(EXTI_IMR1_IM30)
142 #define LL_EXTI_LINE_30                EXTI_IMR1_IM30          /*!< Extended line 30 */
143 #endif /* EXTI_IMR1_IM30 */
144 #if defined(EXTI_IMR1_IM31)
145 #define LL_EXTI_LINE_31                EXTI_IMR1_IM31          /*!< Extended line 31 */
146 #endif /* EXTI_IMR1_IM31 */
147 #define LL_EXTI_LINE_ALL_0_31          EXTI_IMR1_IM            /*!< All Extended line not reserved*/
148 
149 #if defined(EXTI_IMR2_IM32)
150 #define LL_EXTI_LINE_32                EXTI_IMR2_IM32          /*!< Extended line 32 */
151 #endif /* EXTI_IMR2_IM32 */
152 #if defined(EXTI_IMR2_IM33)
153 #define LL_EXTI_LINE_33                EXTI_IMR2_IM33          /*!< Extended line 33 */
154 #endif /* EXTI_IMR2_IM33 */
155 #if defined(EXTI_IMR2_IM34)
156 #define LL_EXTI_LINE_34                EXTI_IMR2_IM34          /*!< Extended line 34 */
157 #endif /* EXTI_IMR2_IM34 */
158 #if defined(EXTI_IMR2_IM35)
159 #define LL_EXTI_LINE_35                EXTI_IMR2_IM35          /*!< Extended line 35 */
160 #endif /* EXTI_IMR2_IM35 */
161 #if defined(EXTI_IMR2_IM36)
162 #define LL_EXTI_LINE_36                EXTI_IMR2_IM36          /*!< Extended line 36 */
163 #endif /* EXTI_IMR2_IM36 */
164 #if defined(EXTI_IMR2_IM37)
165 #define LL_EXTI_LINE_37                EXTI_IMR2_IM37          /*!< Extended line 37 */
166 #endif /* EXTI_IMR2_IM37 */
167 #if defined(EXTI_IMR2_IM38)
168 #define LL_EXTI_LINE_38                EXTI_IMR2_IM38          /*!< Extended line 38 */
169 #endif /* EXTI_IMR2_IM38 */
170 #if defined(EXTI_IMR2_IM39)
171 #define LL_EXTI_LINE_39                EXTI_IMR2_IM39          /*!< Extended line 39 */
172 #endif /* EXTI_IMR2_IM39 */
173 #if defined(EXTI_IMR2_IM40)
174 #define LL_EXTI_LINE_40                EXTI_IMR2_IM40          /*!< Extended line 40 */
175 #endif /* EXTI_IMR2_IM40 */
176 #if defined(EXTI_IMR2_IM41)
177 #define LL_EXTI_LINE_41                EXTI_IMR2_IM41          /*!< Extended line 41 */
178 #endif /* EXTI_IMR2_IM41 */
179 #if defined(EXTI_IMR2_IM42)
180 #define LL_EXTI_LINE_42                EXTI_IMR2_IM42          /*!< Extended line 42 */
181 #endif /* EXTI_IMR2_IM42 */
182 #define LL_EXTI_LINE_ALL_32_63         EXTI_IMR2_IM            /*!< All Extended line not reserved*/
183 
184 
185 #define LL_EXTI_LINE_ALL               (0xFFFFFFFFU)  /*!< All Extended line */
186 
187 #if defined(USE_FULL_LL_DRIVER)
188 #define LL_EXTI_LINE_NONE              0x00000000U             /*!< None Extended line */
189 #endif /*USE_FULL_LL_DRIVER*/
190 
191 /**
192   * @}
193   */
194 #if defined(USE_FULL_LL_DRIVER)
195 
196 /** @defgroup EXTI_LL_EC_MODE Mode
197   * @{
198   */
199 #define LL_EXTI_MODE_IT                 ((uint8_t)0x00U) /*!< Interrupt Mode */
200 #define LL_EXTI_MODE_EVENT              ((uint8_t)0x01U) /*!< Event Mode */
201 #define LL_EXTI_MODE_IT_EVENT           ((uint8_t)0x02U) /*!< Interrupt & Event Mode */
202 /**
203   * @}
204   */
205 
206 /** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger
207   * @{
208   */
209 #define LL_EXTI_TRIGGER_NONE            ((uint8_t)0x00U) /*!< No Trigger Mode */
210 #define LL_EXTI_TRIGGER_RISING          ((uint8_t)0x01U) /*!< Trigger Rising Mode */
211 #define LL_EXTI_TRIGGER_FALLING         ((uint8_t)0x02U) /*!< Trigger Falling Mode */
212 #define LL_EXTI_TRIGGER_RISING_FALLING  ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */
213 
214 /**
215   * @}
216   */
217 
218 
219 #endif /*USE_FULL_LL_DRIVER*/
220 
221 
222 /**
223   * @}
224   */
225 
226 /* Exported macro ------------------------------------------------------------*/
227 /** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros
228   * @{
229   */
230 
231 /** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros
232   * @{
233   */
234 
235 /**
236   * @brief  Write a value in EXTI register
237   * @param  __REG__ Register to be written
238   * @param  __VALUE__ Value to be written in the register
239   * @retval None
240   */
241 #define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__))
242 
243 /**
244   * @brief  Read a value in EXTI register
245   * @param  __REG__ Register to be read
246   * @retval Register value
247   */
248 #define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__)
249 /**
250   * @}
251   */
252 
253 
254 /**
255   * @}
256   */
257 
258 
259 
260 /* Exported functions --------------------------------------------------------*/
261 /** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions
262   * @{
263   */
264 /** @defgroup EXTI_LL_EF_IT_Management IT_Management
265   * @{
266   */
267 
268 /**
269   * @brief  Enable ExtiLine Interrupt request for Lines in range 0 to 31
270   * @note The reset value for the direct or internal lines (see RM)
271   *       is set to 1 in order to enable the interrupt by default.
272   *       Bits are set automatically at Power on.
273   * @rmtoll IMR1         IMx           LL_EXTI_EnableIT_0_31
274   * @param  ExtiLine This parameter can be one of the following values:
275   *         @arg @ref LL_EXTI_LINE_0
276   *         @arg @ref LL_EXTI_LINE_1
277   *         @arg @ref LL_EXTI_LINE_2
278   *         @arg @ref LL_EXTI_LINE_3
279   *         @arg @ref LL_EXTI_LINE_4
280   *         @arg @ref LL_EXTI_LINE_5
281   *         @arg @ref LL_EXTI_LINE_6
282   *         @arg @ref LL_EXTI_LINE_7
283   *         @arg @ref LL_EXTI_LINE_8
284   *         @arg @ref LL_EXTI_LINE_9
285   *         @arg @ref LL_EXTI_LINE_10
286   *         @arg @ref LL_EXTI_LINE_11
287   *         @arg @ref LL_EXTI_LINE_12
288   *         @arg @ref LL_EXTI_LINE_13
289   *         @arg @ref LL_EXTI_LINE_14
290   *         @arg @ref LL_EXTI_LINE_15
291   *         @arg @ref LL_EXTI_LINE_16
292   *         @arg @ref LL_EXTI_LINE_17
293   *         @arg @ref LL_EXTI_LINE_18
294   *         @arg @ref LL_EXTI_LINE_19
295   *         @arg @ref LL_EXTI_LINE_20
296   *         @arg @ref LL_EXTI_LINE_21
297   *         @arg @ref LL_EXTI_LINE_22
298   *         @arg @ref LL_EXTI_LINE_23
299   *         @arg @ref LL_EXTI_LINE_24
300   *         @arg @ref LL_EXTI_LINE_25
301   *         @arg @ref LL_EXTI_LINE_26
302   *         @arg @ref LL_EXTI_LINE_27
303   *         @arg @ref LL_EXTI_LINE_28
304   *         @arg @ref LL_EXTI_LINE_29
305   *         @arg @ref LL_EXTI_LINE_30
306   *         @arg @ref LL_EXTI_LINE_31 (*)
307   *         @arg @ref LL_EXTI_LINE_ALL_0_31
308   * @note   (*): Available in some devices
309   * @note   Please check each device line mapping for EXTI Line availability
310   * @retval None
311   */
LL_EXTI_EnableIT_0_31(uint32_t ExtiLine)312 __STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine)
313 {
314   SET_BIT(EXTI->IMR1, ExtiLine);
315 }
316 /**
317   * @brief  Enable ExtiLine Interrupt request for Lines in range 32 to 63
318   * @note The reset value for the direct lines (lines from 32 to 34, line
319   *       39) is set to 1 in order to enable the interrupt by default.
320   *       Bits are set automatically at Power on.
321   * @rmtoll IMR2         IMx           LL_EXTI_EnableIT_32_63
322   * @param  ExtiLine This parameter can be one of the following values:
323   *         @arg @ref LL_EXTI_LINE_32 (*)
324   *         @arg @ref LL_EXTI_LINE_33 (*)
325   *         @arg @ref LL_EXTI_LINE_34
326   *         @arg @ref LL_EXTI_LINE_35 (*)
327   *         @arg @ref LL_EXTI_LINE_36
328   *         @arg @ref LL_EXTI_LINE_37
329   *         @arg @ref LL_EXTI_LINE_38
330   *         @arg @ref LL_EXTI_LINE_39
331   *         @arg @ref LL_EXTI_LINE_40
332   *         @arg @ref LL_EXTI_LINE_41
333   *         @arg @ref LL_EXTI_LINE_42(*)
334   *         @arg @ref LL_EXTI_LINE_ALL_32_63
335   * @note   (*): Available in some devices
336   * @retval None
337   */
LL_EXTI_EnableIT_32_63(uint32_t ExtiLine)338 __STATIC_INLINE void LL_EXTI_EnableIT_32_63(uint32_t ExtiLine)
339 {
340   SET_BIT(EXTI->IMR2, ExtiLine);
341 }
342 
343 /**
344   * @brief  Disable ExtiLine Interrupt request for Lines in range 0 to 31
345   * @note The reset value for the direct or internal lines (see RM)
346   *       is set to 1 in order to enable the interrupt by default.
347   *       Bits are set automatically at Power on.
348   * @rmtoll IMR1         IMx           LL_EXTI_DisableIT_0_31
349   * @param  ExtiLine This parameter can be one of the following values:
350   *         @arg @ref LL_EXTI_LINE_0
351   *         @arg @ref LL_EXTI_LINE_1
352   *         @arg @ref LL_EXTI_LINE_2
353   *         @arg @ref LL_EXTI_LINE_3
354   *         @arg @ref LL_EXTI_LINE_4
355   *         @arg @ref LL_EXTI_LINE_5
356   *         @arg @ref LL_EXTI_LINE_6
357   *         @arg @ref LL_EXTI_LINE_7
358   *         @arg @ref LL_EXTI_LINE_8
359   *         @arg @ref LL_EXTI_LINE_9
360   *         @arg @ref LL_EXTI_LINE_10
361   *         @arg @ref LL_EXTI_LINE_11
362   *         @arg @ref LL_EXTI_LINE_12
363   *         @arg @ref LL_EXTI_LINE_13
364   *         @arg @ref LL_EXTI_LINE_14
365   *         @arg @ref LL_EXTI_LINE_15
366   *         @arg @ref LL_EXTI_LINE_16
367   *         @arg @ref LL_EXTI_LINE_17
368   *         @arg @ref LL_EXTI_LINE_18
369   *         @arg @ref LL_EXTI_LINE_19
370   *         @arg @ref LL_EXTI_LINE_20
371   *         @arg @ref LL_EXTI_LINE_21
372   *         @arg @ref LL_EXTI_LINE_22
373   *         @arg @ref LL_EXTI_LINE_23
374   *         @arg @ref LL_EXTI_LINE_24
375   *         @arg @ref LL_EXTI_LINE_25
376   *         @arg @ref LL_EXTI_LINE_26
377   *         @arg @ref LL_EXTI_LINE_27
378   *         @arg @ref LL_EXTI_LINE_28
379   *         @arg @ref LL_EXTI_LINE_29
380   *         @arg @ref LL_EXTI_LINE_30
381   *         @arg @ref LL_EXTI_LINE_31
382   *         @arg @ref LL_EXTI_LINE_ALL_0_31 (*)
383   * @note   (*): Available in some devices
384   * @note   Please check each device line mapping for EXTI Line availability
385   * @retval None
386   */
LL_EXTI_DisableIT_0_31(uint32_t ExtiLine)387 __STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine)
388 {
389   CLEAR_BIT(EXTI->IMR1, ExtiLine);
390 }
391 
392 /**
393   * @brief  Disable ExtiLine Interrupt request for Lines in range 32 to 63
394   * @note The reset value for the direct lines (lines from 32 to 34, line
395   *       39) is set to 1 in order to enable the interrupt by default.
396   *       Bits are set automatically at Power on.
397   * @rmtoll IMR2         IMx           LL_EXTI_DisableIT_32_63
398   * @param  ExtiLine This parameter can be one of the following values:
399   *         @arg @ref LL_EXTI_LINE_32 (*)
400   *         @arg @ref LL_EXTI_LINE_33 (*)
401   *         @arg @ref LL_EXTI_LINE_34
402   *         @arg @ref LL_EXTI_LINE_35 (*)
403   *         @arg @ref LL_EXTI_LINE_36
404   *         @arg @ref LL_EXTI_LINE_37
405   *         @arg @ref LL_EXTI_LINE_38
406   *         @arg @ref LL_EXTI_LINE_39
407   *         @arg @ref LL_EXTI_LINE_40
408   *         @arg @ref LL_EXTI_LINE_41
409   *         @arg @ref LL_EXTI_LINE_42(*)
410   *         @arg @ref LL_EXTI_LINE_ALL_32_63
411   * @note   (*): Available in some devices
412   * @retval None
413   */
LL_EXTI_DisableIT_32_63(uint32_t ExtiLine)414 __STATIC_INLINE void LL_EXTI_DisableIT_32_63(uint32_t ExtiLine)
415 {
416   CLEAR_BIT(EXTI->IMR2, ExtiLine);
417 }
418 
419 /**
420   * @brief  Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31
421   * @note The reset value for the direct or internal lines (see RM)
422   *       is set to 1 in order to enable the interrupt by default.
423   *       Bits are set automatically at Power on.
424   * @rmtoll IMR1         IMx           LL_EXTI_IsEnabledIT_0_31
425   * @param  ExtiLine This parameter can be one of the following values:
426   *         @arg @ref LL_EXTI_LINE_0
427   *         @arg @ref LL_EXTI_LINE_1
428   *         @arg @ref LL_EXTI_LINE_2
429   *         @arg @ref LL_EXTI_LINE_3
430   *         @arg @ref LL_EXTI_LINE_4
431   *         @arg @ref LL_EXTI_LINE_5
432   *         @arg @ref LL_EXTI_LINE_6
433   *         @arg @ref LL_EXTI_LINE_7
434   *         @arg @ref LL_EXTI_LINE_8
435   *         @arg @ref LL_EXTI_LINE_9
436   *         @arg @ref LL_EXTI_LINE_10
437   *         @arg @ref LL_EXTI_LINE_11
438   *         @arg @ref LL_EXTI_LINE_12
439   *         @arg @ref LL_EXTI_LINE_13
440   *         @arg @ref LL_EXTI_LINE_14
441   *         @arg @ref LL_EXTI_LINE_15
442   *         @arg @ref LL_EXTI_LINE_16
443   *         @arg @ref LL_EXTI_LINE_17
444   *         @arg @ref LL_EXTI_LINE_18
445   *         @arg @ref LL_EXTI_LINE_19
446   *         @arg @ref LL_EXTI_LINE_20
447   *         @arg @ref LL_EXTI_LINE_21
448   *         @arg @ref LL_EXTI_LINE_22
449   *         @arg @ref LL_EXTI_LINE_23
450   *         @arg @ref LL_EXTI_LINE_24
451   *         @arg @ref LL_EXTI_LINE_25
452   *         @arg @ref LL_EXTI_LINE_26
453   *         @arg @ref LL_EXTI_LINE_27
454   *         @arg @ref LL_EXTI_LINE_28
455   *         @arg @ref LL_EXTI_LINE_29
456   *         @arg @ref LL_EXTI_LINE_30
457   *         @arg @ref LL_EXTI_LINE_31 (*)
458   *         @arg @ref LL_EXTI_LINE_ALL_0_31
459   * @note   (*): Available in some devices
460   * @note   Please check each device line mapping for EXTI Line availability
461   * @retval State of bit (1 or 0).
462   */
LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine)463 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine)
464 {
465   return ((READ_BIT(EXTI->IMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
466 }
467 
468 /**
469   * @brief  Indicate if ExtiLine Interrupt request is enabled for Lines in range 32 to 63
470   * @note The reset value for the direct lines (lines from 32 to 34, line
471   *       39) is set to 1 in order to enable the interrupt by default.
472   *       Bits are set automatically at Power on.
473   * @rmtoll IMR2         IMx           LL_EXTI_IsEnabledIT_32_63
474   * @param  ExtiLine This parameter can be one of the following values:
475   *         @arg @ref LL_EXTI_LINE_32 (*)
476   *         @arg @ref LL_EXTI_LINE_33 (*)
477   *         @arg @ref LL_EXTI_LINE_34
478   *         @arg @ref LL_EXTI_LINE_35 (*)
479   *         @arg @ref LL_EXTI_LINE_36
480   *         @arg @ref LL_EXTI_LINE_37
481   *         @arg @ref LL_EXTI_LINE_38
482   *         @arg @ref LL_EXTI_LINE_39
483   *         @arg @ref LL_EXTI_LINE_40
484   *         @arg @ref LL_EXTI_LINE_41
485   *         @arg @ref LL_EXTI_LINE_42(*)
486   *         @arg @ref LL_EXTI_LINE_ALL_32_63
487   * @note   (*): Available in some devices
488   * @retval State of bit (1 or 0).
489   */
LL_EXTI_IsEnabledIT_32_63(uint32_t ExtiLine)490 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_32_63(uint32_t ExtiLine)
491 {
492   return ((READ_BIT(EXTI->IMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
493 }
494 
495 /**
496   * @}
497   */
498 
499 /** @defgroup EXTI_LL_EF_Event_Management Event_Management
500   * @{
501   */
502 
503 /**
504   * @brief  Enable ExtiLine Event request for Lines in range 0 to 31
505   * @rmtoll EMR1         EMx           LL_EXTI_EnableEvent_0_31
506   * @param  ExtiLine This parameter can be one of the following values:
507   *         @arg @ref LL_EXTI_LINE_0
508   *         @arg @ref LL_EXTI_LINE_1
509   *         @arg @ref LL_EXTI_LINE_2
510   *         @arg @ref LL_EXTI_LINE_3
511   *         @arg @ref LL_EXTI_LINE_4
512   *         @arg @ref LL_EXTI_LINE_5
513   *         @arg @ref LL_EXTI_LINE_6
514   *         @arg @ref LL_EXTI_LINE_7
515   *         @arg @ref LL_EXTI_LINE_8
516   *         @arg @ref LL_EXTI_LINE_9
517   *         @arg @ref LL_EXTI_LINE_10
518   *         @arg @ref LL_EXTI_LINE_11
519   *         @arg @ref LL_EXTI_LINE_12
520   *         @arg @ref LL_EXTI_LINE_13
521   *         @arg @ref LL_EXTI_LINE_14
522   *         @arg @ref LL_EXTI_LINE_15
523   *         @arg @ref LL_EXTI_LINE_16
524   *         @arg @ref LL_EXTI_LINE_17
525   *         @arg @ref LL_EXTI_LINE_18
526   *         @arg @ref LL_EXTI_LINE_19
527   *         @arg @ref LL_EXTI_LINE_20
528   *         @arg @ref LL_EXTI_LINE_21
529   *         @arg @ref LL_EXTI_LINE_22
530   *         @arg @ref LL_EXTI_LINE_23
531   *         @arg @ref LL_EXTI_LINE_24
532   *         @arg @ref LL_EXTI_LINE_25
533   *         @arg @ref LL_EXTI_LINE_26
534   *         @arg @ref LL_EXTI_LINE_27
535   *         @arg @ref LL_EXTI_LINE_28
536   *         @arg @ref LL_EXTI_LINE_29
537   *         @arg @ref LL_EXTI_LINE_30
538   *         @arg @ref LL_EXTI_LINE_31
539   *         @arg @ref LL_EXTI_LINE_ALL_0_31 (*)
540   * @note   (*): Available in some devices
541   * @note   Please check each device line mapping for EXTI Line availability
542   * @retval None
543   */
LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine)544 __STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine)
545 {
546   SET_BIT(EXTI->EMR1, ExtiLine);
547 
548 }
549 
550 /**
551   * @brief  Enable ExtiLine Event request for Lines in range 32 to 63
552   * @rmtoll EMR2         EMx           LL_EXTI_EnableEvent_32_63
553   * @param  ExtiLine This parameter can be a combination of the following values:
554   *         @arg @ref LL_EXTI_LINE_32 (*)
555   *         @arg @ref LL_EXTI_LINE_33 (*)
556   *         @arg @ref LL_EXTI_LINE_34
557   *         @arg @ref LL_EXTI_LINE_35 (*)
558   *         @arg @ref LL_EXTI_LINE_36
559   *         @arg @ref LL_EXTI_LINE_37
560   *         @arg @ref LL_EXTI_LINE_38
561   *         @arg @ref LL_EXTI_LINE_39
562   *         @arg @ref LL_EXTI_LINE_40
563   *         @arg @ref LL_EXTI_LINE_41
564   *         @arg @ref LL_EXTI_LINE_42(*)
565   *         @arg @ref LL_EXTI_LINE_ALL_32_63
566   * @note   (*): Available in some devices
567   * @retval None
568   */
LL_EXTI_EnableEvent_32_63(uint32_t ExtiLine)569 __STATIC_INLINE void LL_EXTI_EnableEvent_32_63(uint32_t ExtiLine)
570 {
571   SET_BIT(EXTI->EMR2, ExtiLine);
572 }
573 
574 /**
575   * @brief  Disable ExtiLine Event request for Lines in range 0 to 31
576   * @rmtoll EMR1         EMx           LL_EXTI_DisableEvent_0_31
577   * @param  ExtiLine This parameter can be one of the following values:
578   *         @arg @ref LL_EXTI_LINE_0
579   *         @arg @ref LL_EXTI_LINE_1
580   *         @arg @ref LL_EXTI_LINE_2
581   *         @arg @ref LL_EXTI_LINE_3
582   *         @arg @ref LL_EXTI_LINE_4
583   *         @arg @ref LL_EXTI_LINE_5
584   *         @arg @ref LL_EXTI_LINE_6
585   *         @arg @ref LL_EXTI_LINE_7
586   *         @arg @ref LL_EXTI_LINE_8
587   *         @arg @ref LL_EXTI_LINE_9
588   *         @arg @ref LL_EXTI_LINE_10
589   *         @arg @ref LL_EXTI_LINE_11
590   *         @arg @ref LL_EXTI_LINE_12
591   *         @arg @ref LL_EXTI_LINE_13
592   *         @arg @ref LL_EXTI_LINE_14
593   *         @arg @ref LL_EXTI_LINE_15
594   *         @arg @ref LL_EXTI_LINE_16
595   *         @arg @ref LL_EXTI_LINE_17
596   *         @arg @ref LL_EXTI_LINE_18
597   *         @arg @ref LL_EXTI_LINE_19
598   *         @arg @ref LL_EXTI_LINE_20
599   *         @arg @ref LL_EXTI_LINE_21
600   *         @arg @ref LL_EXTI_LINE_22
601   *         @arg @ref LL_EXTI_LINE_23
602   *         @arg @ref LL_EXTI_LINE_24
603   *         @arg @ref LL_EXTI_LINE_25
604   *         @arg @ref LL_EXTI_LINE_26
605   *         @arg @ref LL_EXTI_LINE_27
606   *         @arg @ref LL_EXTI_LINE_28
607   *         @arg @ref LL_EXTI_LINE_29
608   *         @arg @ref LL_EXTI_LINE_30
609   *         @arg @ref LL_EXTI_LINE_31 (*)
610   *         @arg @ref LL_EXTI_LINE_ALL_0_31
611   * @note   (*): Available in some devices
612   * @note   Please check each device line mapping for EXTI Line availability
613   * @retval None
614   */
LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine)615 __STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine)
616 {
617   CLEAR_BIT(EXTI->EMR1, ExtiLine);
618 }
619 
620 /**
621   * @brief  Disable ExtiLine Event request for Lines in range 32 to 63
622   * @rmtoll EMR2         EMx           LL_EXTI_DisableEvent_32_63
623   * @param  ExtiLine This parameter can be a combination of the following values:
624   *         @arg @ref LL_EXTI_LINE_32 (*)
625   *         @arg @ref LL_EXTI_LINE_33 (*)
626   *         @arg @ref LL_EXTI_LINE_34
627   *         @arg @ref LL_EXTI_LINE_35 (*)
628   *         @arg @ref LL_EXTI_LINE_36
629   *         @arg @ref LL_EXTI_LINE_37
630   *         @arg @ref LL_EXTI_LINE_38
631   *         @arg @ref LL_EXTI_LINE_39
632   *         @arg @ref LL_EXTI_LINE_40
633   *         @arg @ref LL_EXTI_LINE_41
634   *         @arg @ref LL_EXTI_LINE_42(*)
635   *         @arg @ref LL_EXTI_LINE_ALL_32_63
636   * @note   (*): Available in some devices
637   * @retval None
638   */
LL_EXTI_DisableEvent_32_63(uint32_t ExtiLine)639 __STATIC_INLINE void LL_EXTI_DisableEvent_32_63(uint32_t ExtiLine)
640 {
641   CLEAR_BIT(EXTI->EMR2, ExtiLine);
642 }
643 
644 /**
645   * @brief  Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31
646   * @rmtoll EMR1         EMx           LL_EXTI_IsEnabledEvent_0_31
647   * @param  ExtiLine This parameter can be one of the following values:
648   *         @arg @ref LL_EXTI_LINE_0
649   *         @arg @ref LL_EXTI_LINE_1
650   *         @arg @ref LL_EXTI_LINE_2
651   *         @arg @ref LL_EXTI_LINE_3
652   *         @arg @ref LL_EXTI_LINE_4
653   *         @arg @ref LL_EXTI_LINE_5
654   *         @arg @ref LL_EXTI_LINE_6
655   *         @arg @ref LL_EXTI_LINE_7
656   *         @arg @ref LL_EXTI_LINE_8
657   *         @arg @ref LL_EXTI_LINE_9
658   *         @arg @ref LL_EXTI_LINE_10
659   *         @arg @ref LL_EXTI_LINE_11
660   *         @arg @ref LL_EXTI_LINE_12
661   *         @arg @ref LL_EXTI_LINE_13
662   *         @arg @ref LL_EXTI_LINE_14
663   *         @arg @ref LL_EXTI_LINE_15
664   *         @arg @ref LL_EXTI_LINE_16
665   *         @arg @ref LL_EXTI_LINE_17
666   *         @arg @ref LL_EXTI_LINE_18
667   *         @arg @ref LL_EXTI_LINE_19
668   *         @arg @ref LL_EXTI_LINE_20
669   *         @arg @ref LL_EXTI_LINE_21
670   *         @arg @ref LL_EXTI_LINE_22
671   *         @arg @ref LL_EXTI_LINE_23
672   *         @arg @ref LL_EXTI_LINE_24
673   *         @arg @ref LL_EXTI_LINE_25
674   *         @arg @ref LL_EXTI_LINE_26
675   *         @arg @ref LL_EXTI_LINE_27
676   *         @arg @ref LL_EXTI_LINE_28
677   *         @arg @ref LL_EXTI_LINE_29
678   *         @arg @ref LL_EXTI_LINE_30
679   *         @arg @ref LL_EXTI_LINE_31
680   *         @arg @ref LL_EXTI_LINE_ALL_0_31 (*)
681   * @note   (*): Available in some devices
682   * @note   Please check each device line mapping for EXTI Line availability
683   * @retval State of bit (1 or 0).
684   */
LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine)685 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine)
686 {
687   return ((READ_BIT(EXTI->EMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
688 
689 }
690 
691 /**
692   * @brief  Indicate if ExtiLine Event request is enabled for Lines in range 32 to 63
693   * @rmtoll EMR2         EMx           LL_EXTI_IsEnabledEvent_32_63
694   * @param  ExtiLine This parameter can be a combination of the following values:
695   *         @arg @ref LL_EXTI_LINE_32 (*)
696   *         @arg @ref LL_EXTI_LINE_33 (*)
697   *         @arg @ref LL_EXTI_LINE_34
698   *         @arg @ref LL_EXTI_LINE_35 (*)
699   *         @arg @ref LL_EXTI_LINE_36
700   *         @arg @ref LL_EXTI_LINE_37
701   *         @arg @ref LL_EXTI_LINE_38
702   *         @arg @ref LL_EXTI_LINE_39
703   *         @arg @ref LL_EXTI_LINE_40
704   *         @arg @ref LL_EXTI_LINE_41
705   *         @arg @ref LL_EXTI_LINE_42(*)
706   *         @arg @ref LL_EXTI_LINE_ALL_32_63
707   * @note   (*): Available in some devices
708   * @retval State of bit (1 or 0).
709   */
LL_EXTI_IsEnabledEvent_32_63(uint32_t ExtiLine)710 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_32_63(uint32_t ExtiLine)
711 {
712   return ((READ_BIT(EXTI->EMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
713 }
714 
715 /**
716   * @}
717   */
718 
719 /** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management
720   * @{
721   */
722 
723 /**
724   * @brief  Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31
725   * @note The configurable wakeup lines are edge-triggered. No glitch must be
726   *       generated on these lines. If a rising edge on a configurable interrupt
727   *       line occurs during a write operation in the EXTI_RTSR register, the
728   *       pending bit is not set.
729   *       Rising and falling edge triggers can be set for
730   *       the same interrupt line. In this case, both generate a trigger
731   *       condition.
732   * @rmtoll RTSR1        RTx           LL_EXTI_EnableRisingTrig_0_31
733   * @param  ExtiLine This parameter can be a combination of the following values:
734   *         @arg @ref LL_EXTI_LINE_0
735   *         @arg @ref LL_EXTI_LINE_1
736   *         @arg @ref LL_EXTI_LINE_2
737   *         @arg @ref LL_EXTI_LINE_3
738   *         @arg @ref LL_EXTI_LINE_4
739   *         @arg @ref LL_EXTI_LINE_5
740   *         @arg @ref LL_EXTI_LINE_6
741   *         @arg @ref LL_EXTI_LINE_7
742   *         @arg @ref LL_EXTI_LINE_8
743   *         @arg @ref LL_EXTI_LINE_9
744   *         @arg @ref LL_EXTI_LINE_10
745   *         @arg @ref LL_EXTI_LINE_11
746   *         @arg @ref LL_EXTI_LINE_12
747   *         @arg @ref LL_EXTI_LINE_13
748   *         @arg @ref LL_EXTI_LINE_14
749   *         @arg @ref LL_EXTI_LINE_15
750   *         @arg @ref LL_EXTI_LINE_16
751   *         @arg @ref LL_EXTI_LINE_18
752   *         @arg @ref LL_EXTI_LINE_19
753   *         @arg @ref LL_EXTI_LINE_20
754   *         @arg @ref LL_EXTI_LINE_21
755   *         @arg @ref LL_EXTI_LINE_22
756   *         @arg @ref LL_EXTI_LINE_29
757   *         @arg @ref LL_EXTI_LINE_30
758   *         @arg @ref LL_EXTI_LINE_31 (*)
759   * @note   (*): Available in some devices
760   * @note   Please check each device line mapping for EXTI Line availability
761   * @retval None
762   */
LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine)763 __STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine)
764 {
765   SET_BIT(EXTI->RTSR1, ExtiLine);
766 
767 }
768 
769 /**
770   * @brief  Enable ExtiLine Rising Edge Trigger for Lines in range 32 to 63
771   * @note The configurable wakeup lines are edge-triggered. No glitch must be
772   *       generated on these lines. If a rising edge on a configurable interrupt
773   *       line occurs during a write operation in the EXTI_RTSR register, the
774   *       pending bit is not set.Rising and falling edge triggers can be set for
775   *       the same interrupt line. In this case, both generate a trigger
776   *       condition.
777   * @rmtoll RTSR2        RTx           LL_EXTI_EnableRisingTrig_32_63
778   * @param  ExtiLine This parameter can be a combination of the following values:
779   *         @arg @ref LL_EXTI_LINE_32 (*)
780   *         @arg @ref LL_EXTI_LINE_33 (*)
781   *         @arg @ref LL_EXTI_LINE_38
782   *         @arg @ref LL_EXTI_LINE_39
783   *         @arg @ref LL_EXTI_LINE_40
784   *         @arg @ref LL_EXTI_LINE_41
785   * @note   (*): Available in some devices
786   * @retval None
787   */
LL_EXTI_EnableRisingTrig_32_63(uint32_t ExtiLine)788 __STATIC_INLINE void LL_EXTI_EnableRisingTrig_32_63(uint32_t ExtiLine)
789 {
790   SET_BIT(EXTI->RTSR2, ExtiLine);
791 }
792 
793 /**
794   * @brief  Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31
795   * @note The configurable wakeup lines are edge-triggered. No glitch must be
796   *       generated on these lines. If a rising edge on a configurable interrupt
797   *       line occurs during a write operation in the EXTI_RTSR register, the
798   *       pending bit is not set.
799   *       Rising and falling edge triggers can be set for
800   *       the same interrupt line. In this case, both generate a trigger
801   *       condition.
802   * @rmtoll RTSR1        RTx           LL_EXTI_DisableRisingTrig_0_31
803   * @param  ExtiLine This parameter can be a combination of the following values:
804   *         @arg @ref LL_EXTI_LINE_0
805   *         @arg @ref LL_EXTI_LINE_1
806   *         @arg @ref LL_EXTI_LINE_2
807   *         @arg @ref LL_EXTI_LINE_3
808   *         @arg @ref LL_EXTI_LINE_4
809   *         @arg @ref LL_EXTI_LINE_5
810   *         @arg @ref LL_EXTI_LINE_6
811   *         @arg @ref LL_EXTI_LINE_7
812   *         @arg @ref LL_EXTI_LINE_8
813   *         @arg @ref LL_EXTI_LINE_9
814   *         @arg @ref LL_EXTI_LINE_10
815   *         @arg @ref LL_EXTI_LINE_11
816   *         @arg @ref LL_EXTI_LINE_12
817   *         @arg @ref LL_EXTI_LINE_13
818   *         @arg @ref LL_EXTI_LINE_14
819   *         @arg @ref LL_EXTI_LINE_15
820   *         @arg @ref LL_EXTI_LINE_16
821   *         @arg @ref LL_EXTI_LINE_18
822   *         @arg @ref LL_EXTI_LINE_19
823   *         @arg @ref LL_EXTI_LINE_20
824   *         @arg @ref LL_EXTI_LINE_21
825   *         @arg @ref LL_EXTI_LINE_22
826   *         @arg @ref LL_EXTI_LINE_29
827   *         @arg @ref LL_EXTI_LINE_30
828   *         @arg @ref LL_EXTI_LINE_31 (*)
829   * @note   (*): Available in some devices
830   * @note   Please check each device line mapping for EXTI Line availability
831   * @retval None
832   */
LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine)833 __STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine)
834 {
835   CLEAR_BIT(EXTI->RTSR1, ExtiLine);
836 
837 }
838 
839 /**
840   * @brief  Disable ExtiLine Rising Edge Trigger for Lines in range 32 to 63
841   * @note The configurable wakeup lines are edge-triggered. No glitch must be
842   *       generated on these lines. If a rising edge on a configurable interrupt
843   *       line occurs during a write operation in the EXTI_RTSR register, the
844   *       pending bit is not set.
845   *       Rising and falling edge triggers can be set for
846   *       the same interrupt line. In this case, both generate a trigger
847   *       condition.
848   * @rmtoll RTSR2        RTx           LL_EXTI_DisableRisingTrig_32_63
849   * @param  ExtiLine This parameter can be a combination of the following values:
850   *         @arg @ref LL_EXTI_LINE_32 (*)
851   *         @arg @ref LL_EXTI_LINE_33 (*)
852   *         @arg @ref LL_EXTI_LINE_38
853   *         @arg @ref LL_EXTI_LINE_39
854   *         @arg @ref LL_EXTI_LINE_40
855   *         @arg @ref LL_EXTI_LINE_41
856   * @note   (*): Available in some devices
857   * @retval None
858   */
LL_EXTI_DisableRisingTrig_32_63(uint32_t ExtiLine)859 __STATIC_INLINE void LL_EXTI_DisableRisingTrig_32_63(uint32_t ExtiLine)
860 {
861   CLEAR_BIT(EXTI->RTSR2, ExtiLine);
862 }
863 
864 /**
865   * @brief  Check if rising edge trigger is enabled for Lines in range 0 to 31
866   * @rmtoll RTSR1        RTx           LL_EXTI_IsEnabledRisingTrig_0_31
867   * @param  ExtiLine This parameter can be a combination of the following values:
868   *         @arg @ref LL_EXTI_LINE_0
869   *         @arg @ref LL_EXTI_LINE_1
870   *         @arg @ref LL_EXTI_LINE_2
871   *         @arg @ref LL_EXTI_LINE_3
872   *         @arg @ref LL_EXTI_LINE_4
873   *         @arg @ref LL_EXTI_LINE_5
874   *         @arg @ref LL_EXTI_LINE_6
875   *         @arg @ref LL_EXTI_LINE_7
876   *         @arg @ref LL_EXTI_LINE_8
877   *         @arg @ref LL_EXTI_LINE_9
878   *         @arg @ref LL_EXTI_LINE_10
879   *         @arg @ref LL_EXTI_LINE_11
880   *         @arg @ref LL_EXTI_LINE_12
881   *         @arg @ref LL_EXTI_LINE_13
882   *         @arg @ref LL_EXTI_LINE_14
883   *         @arg @ref LL_EXTI_LINE_15
884   *         @arg @ref LL_EXTI_LINE_16
885   *         @arg @ref LL_EXTI_LINE_18
886   *         @arg @ref LL_EXTI_LINE_19
887   *         @arg @ref LL_EXTI_LINE_20
888   *         @arg @ref LL_EXTI_LINE_21
889   *         @arg @ref LL_EXTI_LINE_22
890   *         @arg @ref LL_EXTI_LINE_29
891   *         @arg @ref LL_EXTI_LINE_30
892   *         @arg @ref LL_EXTI_LINE_31 (*)
893   * @note   (*): Available in some devices
894   * @note   Please check each device line mapping for EXTI Line availability
895   * @retval State of bit (1 or 0).
896   */
LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine)897 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine)
898 {
899   return ((READ_BIT(EXTI->RTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
900 }
901 
902 /**
903   * @brief  Check if rising edge trigger is enabled for Lines in range 32 to 63
904   * @rmtoll RTSR2        RTx           LL_EXTI_IsEnabledRisingTrig_32_63
905   * @param  ExtiLine This parameter can be a combination of the following values:
906   *         @arg @ref LL_EXTI_LINE_32 (*)
907   *         @arg @ref LL_EXTI_LINE_33 (*)
908   *         @arg @ref LL_EXTI_LINE_38
909   *         @arg @ref LL_EXTI_LINE_39
910   *         @arg @ref LL_EXTI_LINE_40
911   *         @arg @ref LL_EXTI_LINE_41
912   * @note   (*): Available in some devices
913   * @retval State of bit (1 or 0).
914   */
LL_EXTI_IsEnabledRisingTrig_32_63(uint32_t ExtiLine)915 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_32_63(uint32_t ExtiLine)
916 {
917   return ((READ_BIT(EXTI->RTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
918 }
919 
920 /**
921   * @}
922   */
923 
924 /** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management
925   * @{
926   */
927 
928 /**
929   * @brief  Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31
930   * @note The configurable wakeup lines are edge-triggered. No glitch must be
931   *       generated on these lines. If a falling edge on a configurable interrupt
932   *       line occurs during a write operation in the EXTI_FTSR register, the
933   *       pending bit is not set.
934   *       Rising and falling edge triggers can be set for
935   *       the same interrupt line. In this case, both generate a trigger
936   *       condition.
937   * @rmtoll FTSR1        FTx           LL_EXTI_EnableFallingTrig_0_31
938   * @param  ExtiLine This parameter can be a combination of the following values:
939   *         @arg @ref LL_EXTI_LINE_0
940   *         @arg @ref LL_EXTI_LINE_1
941   *         @arg @ref LL_EXTI_LINE_2
942   *         @arg @ref LL_EXTI_LINE_3
943   *         @arg @ref LL_EXTI_LINE_4
944   *         @arg @ref LL_EXTI_LINE_5
945   *         @arg @ref LL_EXTI_LINE_6
946   *         @arg @ref LL_EXTI_LINE_7
947   *         @arg @ref LL_EXTI_LINE_8
948   *         @arg @ref LL_EXTI_LINE_9
949   *         @arg @ref LL_EXTI_LINE_10
950   *         @arg @ref LL_EXTI_LINE_11
951   *         @arg @ref LL_EXTI_LINE_12
952   *         @arg @ref LL_EXTI_LINE_13
953   *         @arg @ref LL_EXTI_LINE_14
954   *         @arg @ref LL_EXTI_LINE_15
955   *         @arg @ref LL_EXTI_LINE_16
956   *         @arg @ref LL_EXTI_LINE_18
957   *         @arg @ref LL_EXTI_LINE_19
958   *         @arg @ref LL_EXTI_LINE_20
959   *         @arg @ref LL_EXTI_LINE_21
960   *         @arg @ref LL_EXTI_LINE_22
961   *         @arg @ref LL_EXTI_LINE_29
962   *         @arg @ref LL_EXTI_LINE_30
963   *         @arg @ref LL_EXTI_LINE_31 (*)
964   * @note   (*): Available in some devices
965   * @note   Please check each device line mapping for EXTI Line availability
966   * @retval None
967   */
LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine)968 __STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine)
969 {
970   SET_BIT(EXTI->FTSR1, ExtiLine);
971 }
972 
973 /**
974   * @brief  Enable ExtiLine Falling Edge Trigger for Lines in range 32 to 63
975   * @note The configurable wakeup lines are edge-triggered. No glitch must be
976   *       generated on these lines. If a Falling edge on a configurable interrupt
977   *       line occurs during a write operation in the EXTI_FTSR register, the
978   *       pending bit is not set.
979   *       Rising and falling edge triggers can be set for
980   *       the same interrupt line. In this case, both generate a trigger
981   *       condition.
982   * @rmtoll FTSR2        FTx           LL_EXTI_EnableFallingTrig_32_63
983   * @param  ExtiLine This parameter can be a combination of the following values:
984   *         @arg @ref LL_EXTI_LINE_32 (*)
985   *         @arg @ref LL_EXTI_LINE_33 (*)
986   *         @arg @ref LL_EXTI_LINE_38
987   *         @arg @ref LL_EXTI_LINE_39
988   *         @arg @ref LL_EXTI_LINE_40
989   *         @arg @ref LL_EXTI_LINE_41
990   * @note   (*): Available in some devices
991   * @retval None
992   */
LL_EXTI_EnableFallingTrig_32_63(uint32_t ExtiLine)993 __STATIC_INLINE void LL_EXTI_EnableFallingTrig_32_63(uint32_t ExtiLine)
994 {
995   SET_BIT(EXTI->FTSR2, ExtiLine);
996 }
997 
998 /**
999   * @brief  Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31
1000   * @note The configurable wakeup lines are edge-triggered. No glitch must be
1001   *       generated on these lines. If a Falling edge on a configurable interrupt
1002   *       line occurs during a write operation in the EXTI_FTSR register, the
1003   *       pending bit is not set.
1004   *       Rising and falling edge triggers can be set for the same interrupt line.
1005   *       In this case, both generate a trigger condition.
1006   * @rmtoll FTSR1        FTx           LL_EXTI_DisableFallingTrig_0_31
1007   * @param  ExtiLine This parameter can be a combination of the following values:
1008   *         @arg @ref LL_EXTI_LINE_0
1009   *         @arg @ref LL_EXTI_LINE_1
1010   *         @arg @ref LL_EXTI_LINE_2
1011   *         @arg @ref LL_EXTI_LINE_3
1012   *         @arg @ref LL_EXTI_LINE_4
1013   *         @arg @ref LL_EXTI_LINE_5
1014   *         @arg @ref LL_EXTI_LINE_6
1015   *         @arg @ref LL_EXTI_LINE_7
1016   *         @arg @ref LL_EXTI_LINE_8
1017   *         @arg @ref LL_EXTI_LINE_9
1018   *         @arg @ref LL_EXTI_LINE_10
1019   *         @arg @ref LL_EXTI_LINE_11
1020   *         @arg @ref LL_EXTI_LINE_12
1021   *         @arg @ref LL_EXTI_LINE_13
1022   *         @arg @ref LL_EXTI_LINE_14
1023   *         @arg @ref LL_EXTI_LINE_15
1024   *         @arg @ref LL_EXTI_LINE_16
1025   *         @arg @ref LL_EXTI_LINE_18
1026   *         @arg @ref LL_EXTI_LINE_19
1027   *         @arg @ref LL_EXTI_LINE_20
1028   *         @arg @ref LL_EXTI_LINE_21
1029   *         @arg @ref LL_EXTI_LINE_22
1030   *         @arg @ref LL_EXTI_LINE_29
1031   *         @arg @ref LL_EXTI_LINE_30
1032   *         @arg @ref LL_EXTI_LINE_31 (*)
1033   * @note   (*): Available in some devices
1034   * @note   Please check each device line mapping for EXTI Line availability
1035   * @retval None
1036   */
LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine)1037 __STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine)
1038 {
1039   CLEAR_BIT(EXTI->FTSR1, ExtiLine);
1040 }
1041 
1042 /**
1043   * @brief  Disable ExtiLine Falling Edge Trigger for Lines in range 32 to 63
1044   * @note The configurable wakeup lines are edge-triggered. No glitch must be
1045   *       generated on these lines. If a Falling edge on a configurable interrupt
1046   *       line occurs during a write operation in the EXTI_FTSR register, the
1047   *       pending bit is not set.
1048   *       Rising and falling edge triggers can be set for the same interrupt line.
1049   *       In this case, both generate a trigger condition.
1050   * @rmtoll FTSR2        FTx           LL_EXTI_DisableFallingTrig_32_63
1051   * @param  ExtiLine This parameter can be a combination of the following values:
1052   *         @arg @ref LL_EXTI_LINE_32 (*)
1053   *         @arg @ref LL_EXTI_LINE_33 (*)
1054   *         @arg @ref LL_EXTI_LINE_38
1055   *         @arg @ref LL_EXTI_LINE_39
1056   *         @arg @ref LL_EXTI_LINE_40
1057   *         @arg @ref LL_EXTI_LINE_41
1058   * @note   (*): Available in some devices
1059   * @retval None
1060   */
LL_EXTI_DisableFallingTrig_32_63(uint32_t ExtiLine)1061 __STATIC_INLINE void LL_EXTI_DisableFallingTrig_32_63(uint32_t ExtiLine)
1062 {
1063   CLEAR_BIT(EXTI->FTSR2, ExtiLine);
1064 }
1065 
1066 /**
1067   * @brief  Check if falling edge trigger is enabled for Lines in range 0 to 31
1068   * @rmtoll FTSR1        FTx           LL_EXTI_IsEnabledFallingTrig_0_31
1069   * @param  ExtiLine This parameter can be a combination of the following values:
1070   *         @arg @ref LL_EXTI_LINE_0
1071   *         @arg @ref LL_EXTI_LINE_1
1072   *         @arg @ref LL_EXTI_LINE_2
1073   *         @arg @ref LL_EXTI_LINE_3
1074   *         @arg @ref LL_EXTI_LINE_4
1075   *         @arg @ref LL_EXTI_LINE_5
1076   *         @arg @ref LL_EXTI_LINE_6
1077   *         @arg @ref LL_EXTI_LINE_7
1078   *         @arg @ref LL_EXTI_LINE_8
1079   *         @arg @ref LL_EXTI_LINE_9
1080   *         @arg @ref LL_EXTI_LINE_10
1081   *         @arg @ref LL_EXTI_LINE_11
1082   *         @arg @ref LL_EXTI_LINE_12
1083   *         @arg @ref LL_EXTI_LINE_13
1084   *         @arg @ref LL_EXTI_LINE_14
1085   *         @arg @ref LL_EXTI_LINE_15
1086   *         @arg @ref LL_EXTI_LINE_16
1087   *         @arg @ref LL_EXTI_LINE_18
1088   *         @arg @ref LL_EXTI_LINE_19
1089   *         @arg @ref LL_EXTI_LINE_20
1090   *         @arg @ref LL_EXTI_LINE_21
1091   *         @arg @ref LL_EXTI_LINE_22
1092   *         @arg @ref LL_EXTI_LINE_29
1093   *         @arg @ref LL_EXTI_LINE_30
1094   *         @arg @ref LL_EXTI_LINE_31 (*)
1095   * @note   (*): Available in some devices
1096   * @note   Please check each device line mapping for EXTI Line availability
1097   * @retval State of bit (1 or 0).
1098   */
LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine)1099 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine)
1100 {
1101   return ((READ_BIT(EXTI->FTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
1102 }
1103 
1104 /**
1105   * @brief  Check if falling edge trigger is enabled for Lines in range 32 to 63
1106   * @rmtoll FTSR2        FTx           LL_EXTI_IsEnabledFallingTrig_32_63
1107   * @param  ExtiLine This parameter can be a combination of the following values:
1108   *         @arg @ref LL_EXTI_LINE_32 (*)
1109   *         @arg @ref LL_EXTI_LINE_33 (*)
1110   *         @arg @ref LL_EXTI_LINE_38
1111   *         @arg @ref LL_EXTI_LINE_39
1112   *         @arg @ref LL_EXTI_LINE_40
1113   *         @arg @ref LL_EXTI_LINE_41
1114   * @note   (*): Available in some devices
1115   * @retval State of bit (1 or 0).
1116   */
LL_EXTI_IsEnabledFallingTrig_32_63(uint32_t ExtiLine)1117 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_32_63(uint32_t ExtiLine)
1118 {
1119   return ((READ_BIT(EXTI->FTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
1120 }
1121 
1122 /**
1123   * @}
1124   */
1125 
1126 /** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management
1127   * @{
1128   */
1129 
1130 /**
1131   * @brief  Generate a software Interrupt Event for Lines in range 0 to 31
1132   * @note If the interrupt is enabled on this line in the EXTI_IMR1, writing a 1 to
1133   *       this bit when it is at '0' sets the corresponding pending bit in EXTI_PR1
1134   *       resulting in an interrupt request generation.
1135   *       This bit is cleared by clearing the corresponding bit in the EXTI_PR1
1136   *       register (by writing a 1 into the bit)
1137   * @rmtoll SWIER1       SWIx          LL_EXTI_GenerateSWI_0_31
1138   * @param  ExtiLine This parameter can be a combination of the following values:
1139   *         @arg @ref LL_EXTI_LINE_0
1140   *         @arg @ref LL_EXTI_LINE_1
1141   *         @arg @ref LL_EXTI_LINE_2
1142   *         @arg @ref LL_EXTI_LINE_3
1143   *         @arg @ref LL_EXTI_LINE_4
1144   *         @arg @ref LL_EXTI_LINE_5
1145   *         @arg @ref LL_EXTI_LINE_6
1146   *         @arg @ref LL_EXTI_LINE_7
1147   *         @arg @ref LL_EXTI_LINE_8
1148   *         @arg @ref LL_EXTI_LINE_9
1149   *         @arg @ref LL_EXTI_LINE_10
1150   *         @arg @ref LL_EXTI_LINE_11
1151   *         @arg @ref LL_EXTI_LINE_12
1152   *         @arg @ref LL_EXTI_LINE_13
1153   *         @arg @ref LL_EXTI_LINE_14
1154   *         @arg @ref LL_EXTI_LINE_15
1155   *         @arg @ref LL_EXTI_LINE_16
1156   *         @arg @ref LL_EXTI_LINE_18
1157   *         @arg @ref LL_EXTI_LINE_19
1158   *         @arg @ref LL_EXTI_LINE_20
1159   *         @arg @ref LL_EXTI_LINE_21
1160   *         @arg @ref LL_EXTI_LINE_22
1161   *         @arg @ref LL_EXTI_LINE_29
1162   *         @arg @ref LL_EXTI_LINE_30
1163   *         @arg @ref LL_EXTI_LINE_31 (*)
1164   * @note   (*): Available in some devices
1165   * @note   Please check each device line mapping for EXTI Line availability
1166   * @retval None
1167   */
LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine)1168 __STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine)
1169 {
1170   SET_BIT(EXTI->SWIER1, ExtiLine);
1171 }
1172 
1173 /**
1174   * @brief  Generate a software Interrupt Event for Lines in range 32 to 63
1175   * @note If the interrupt is enabled on this line in the EXTI_IMR2, writing a 1 to
1176   *       this bit when it is at '0' sets the corresponding pending bit in EXTI_PR2
1177   *       resulting in an interrupt request generation.
1178   *       This bit is cleared by clearing the corresponding bit in the EXTI_PR2
1179   *       register (by writing a 1 into the bit)
1180   * @rmtoll SWIER2       SWIx          LL_EXTI_GenerateSWI_32_63
1181   * @param  ExtiLine This parameter can be a combination of the following values:
1182   *         @arg @ref LL_EXTI_LINE_32 (*)
1183   *         @arg @ref LL_EXTI_LINE_33 (*)
1184   *         @arg @ref LL_EXTI_LINE_38
1185   *         @arg @ref LL_EXTI_LINE_39
1186   *         @arg @ref LL_EXTI_LINE_40
1187   *         @arg @ref LL_EXTI_LINE_41
1188   * @note   (*): Available in some devices
1189   * @retval None
1190   */
LL_EXTI_GenerateSWI_32_63(uint32_t ExtiLine)1191 __STATIC_INLINE void LL_EXTI_GenerateSWI_32_63(uint32_t ExtiLine)
1192 {
1193   SET_BIT(EXTI->SWIER2, ExtiLine);
1194 }
1195 
1196 /**
1197   * @}
1198   */
1199 
1200 /** @defgroup EXTI_LL_EF_Flag_Management Flag_Management
1201   * @{
1202   */
1203 
1204 /**
1205   * @brief  Check if the ExtLine Flag is set or not for Lines in range 0 to 31
1206   * @note This bit is set when the selected edge event arrives on the interrupt
1207   *       line. This bit is cleared by writing a 1 to the bit.
1208   * @rmtoll PR1          PIFx           LL_EXTI_IsActiveFlag_0_31
1209   * @param  ExtiLine This parameter can be a combination of the following values:
1210   *         @arg @ref LL_EXTI_LINE_0
1211   *         @arg @ref LL_EXTI_LINE_1
1212   *         @arg @ref LL_EXTI_LINE_2
1213   *         @arg @ref LL_EXTI_LINE_3
1214   *         @arg @ref LL_EXTI_LINE_4
1215   *         @arg @ref LL_EXTI_LINE_5
1216   *         @arg @ref LL_EXTI_LINE_6
1217   *         @arg @ref LL_EXTI_LINE_7
1218   *         @arg @ref LL_EXTI_LINE_8
1219   *         @arg @ref LL_EXTI_LINE_9
1220   *         @arg @ref LL_EXTI_LINE_10
1221   *         @arg @ref LL_EXTI_LINE_11
1222   *         @arg @ref LL_EXTI_LINE_12
1223   *         @arg @ref LL_EXTI_LINE_13
1224   *         @arg @ref LL_EXTI_LINE_14
1225   *         @arg @ref LL_EXTI_LINE_15
1226   *         @arg @ref LL_EXTI_LINE_16
1227   *         @arg @ref LL_EXTI_LINE_18
1228   *         @arg @ref LL_EXTI_LINE_19
1229   *         @arg @ref LL_EXTI_LINE_20
1230   *         @arg @ref LL_EXTI_LINE_21
1231   *         @arg @ref LL_EXTI_LINE_22
1232   *         @arg @ref LL_EXTI_LINE_29
1233   *         @arg @ref LL_EXTI_LINE_30
1234   *         @arg @ref LL_EXTI_LINE_31 (*)
1235   * @note   (*): Available in some devices
1236   * @note   Please check each device line mapping for EXTI Line availability
1237   * @retval State of bit (1 or 0).
1238   */
LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine)1239 __STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine)
1240 {
1241   return ((READ_BIT(EXTI->PR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
1242 }
1243 
1244 /**
1245   * @brief  Check if the ExtLine Flag is set or not for  Lines in range 32 to 63
1246   * @note This bit is set when the selected edge event arrives on the interrupt
1247   *       line. This bit is cleared by writing a 1 to the bit.
1248   * @rmtoll PR2          PIFx           LL_EXTI_IsActiveFlag_32_63
1249   * @param  ExtiLine This parameter can be a combination of the following values:
1250   *         @arg @ref LL_EXTI_LINE_32 (*)
1251   *         @arg @ref LL_EXTI_LINE_33 (*)
1252   *         @arg @ref LL_EXTI_LINE_38
1253   *         @arg @ref LL_EXTI_LINE_39
1254   *         @arg @ref LL_EXTI_LINE_40
1255   *         @arg @ref LL_EXTI_LINE_41
1256   * @note   (*): Available in some devices
1257   * @retval State of bit (1 or 0).
1258   */
LL_EXTI_IsActiveFlag_32_63(uint32_t ExtiLine)1259 __STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_32_63(uint32_t ExtiLine)
1260 {
1261   return ((READ_BIT(EXTI->PR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL);
1262 }
1263 
1264 /**
1265   * @brief  Read ExtLine Combination Flag for Lines in range 0 to 31
1266   * @note This bit is set when the selected edge event arrives on the interrupt
1267   *       line. This bit is cleared by writing a 1 to the bit.
1268   * @rmtoll PR1          PIFx           LL_EXTI_ReadFlag_0_31
1269   * @param  ExtiLine This parameter can be a combination of the following values:
1270   *         @arg @ref LL_EXTI_LINE_0
1271   *         @arg @ref LL_EXTI_LINE_1
1272   *         @arg @ref LL_EXTI_LINE_2
1273   *         @arg @ref LL_EXTI_LINE_3
1274   *         @arg @ref LL_EXTI_LINE_4
1275   *         @arg @ref LL_EXTI_LINE_5
1276   *         @arg @ref LL_EXTI_LINE_6
1277   *         @arg @ref LL_EXTI_LINE_7
1278   *         @arg @ref LL_EXTI_LINE_8
1279   *         @arg @ref LL_EXTI_LINE_9
1280   *         @arg @ref LL_EXTI_LINE_10
1281   *         @arg @ref LL_EXTI_LINE_11
1282   *         @arg @ref LL_EXTI_LINE_12
1283   *         @arg @ref LL_EXTI_LINE_13
1284   *         @arg @ref LL_EXTI_LINE_14
1285   *         @arg @ref LL_EXTI_LINE_15
1286   *         @arg @ref LL_EXTI_LINE_16
1287   *         @arg @ref LL_EXTI_LINE_18
1288   *         @arg @ref LL_EXTI_LINE_19
1289   *         @arg @ref LL_EXTI_LINE_20
1290   *         @arg @ref LL_EXTI_LINE_21
1291   *         @arg @ref LL_EXTI_LINE_22
1292   *         @arg @ref LL_EXTI_LINE_29
1293   *         @arg @ref LL_EXTI_LINE_30
1294   *         @arg @ref LL_EXTI_LINE_31 (*)
1295   * @note   (*): Available in some devices
1296   * @note   Please check each device line mapping for EXTI Line availability
1297   * @retval @note This bit is set when the selected edge event arrives on the interrupt
1298   */
LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine)1299 __STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine)
1300 {
1301   return (uint32_t)(READ_BIT(EXTI->PR1, ExtiLine));
1302 }
1303 
1304 /**
1305   * @brief  Read ExtLine Combination Flag for  Lines in range 32 to 63
1306   * @note This bit is set when the selected edge event arrives on the interrupt
1307   *       line. This bit is cleared by writing a 1 to the bit.
1308   * @rmtoll PR2          PIFx           LL_EXTI_ReadFlag_32_63
1309   * @param  ExtiLine This parameter can be a combination of the following values:
1310   *         @arg @ref LL_EXTI_LINE_32 (*)
1311   *         @arg @ref LL_EXTI_LINE_33 (*)
1312   *         @arg @ref LL_EXTI_LINE_38
1313   *         @arg @ref LL_EXTI_LINE_39
1314   *         @arg @ref LL_EXTI_LINE_40
1315   *         @arg @ref LL_EXTI_LINE_41
1316   * @note   (*): Available in some devices
1317   * @retval @note This bit is set when the selected edge event arrives on the interrupt
1318   */
LL_EXTI_ReadFlag_32_63(uint32_t ExtiLine)1319 __STATIC_INLINE uint32_t LL_EXTI_ReadFlag_32_63(uint32_t ExtiLine)
1320 {
1321   return (uint32_t)(READ_BIT(EXTI->PR2, ExtiLine));
1322 }
1323 
1324 /**
1325   * @brief  Clear ExtLine Flags  for Lines in range 0 to 31
1326   * @note This bit is set when the selected edge event arrives on the interrupt
1327   *       line. This bit is cleared by writing a 1 to the bit.
1328   * @rmtoll PR1          PIFx           LL_EXTI_ClearFlag_0_31
1329   * @param  ExtiLine This parameter can be a combination of the following values:
1330   *         @arg @ref LL_EXTI_LINE_0
1331   *         @arg @ref LL_EXTI_LINE_1
1332   *         @arg @ref LL_EXTI_LINE_2
1333   *         @arg @ref LL_EXTI_LINE_3
1334   *         @arg @ref LL_EXTI_LINE_4
1335   *         @arg @ref LL_EXTI_LINE_5
1336   *         @arg @ref LL_EXTI_LINE_6
1337   *         @arg @ref LL_EXTI_LINE_7
1338   *         @arg @ref LL_EXTI_LINE_8
1339   *         @arg @ref LL_EXTI_LINE_9
1340   *         @arg @ref LL_EXTI_LINE_10
1341   *         @arg @ref LL_EXTI_LINE_11
1342   *         @arg @ref LL_EXTI_LINE_12
1343   *         @arg @ref LL_EXTI_LINE_13
1344   *         @arg @ref LL_EXTI_LINE_14
1345   *         @arg @ref LL_EXTI_LINE_15
1346   *         @arg @ref LL_EXTI_LINE_16
1347   *         @arg @ref LL_EXTI_LINE_18
1348   *         @arg @ref LL_EXTI_LINE_19
1349   *         @arg @ref LL_EXTI_LINE_20
1350   *         @arg @ref LL_EXTI_LINE_21
1351   *         @arg @ref LL_EXTI_LINE_22
1352   *         @arg @ref LL_EXTI_LINE_29
1353   *         @arg @ref LL_EXTI_LINE_30
1354   *         @arg @ref LL_EXTI_LINE_31 (*)
1355   * @note   (*): Available in some devices
1356   * @note   Please check each device line mapping for EXTI Line availability
1357   * @retval None
1358   */
LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine)1359 __STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine)
1360 {
1361   WRITE_REG(EXTI->PR1, ExtiLine);
1362 }
1363 
1364 /**
1365   * @brief  Clear ExtLine Flags for  Lines in range 32 to 63
1366   * @note This bit is set when the selected edge event arrives on the interrupt
1367   *       line. This bit is cleared by writing a 1 to the bit.
1368   * @rmtoll PR2          PIFx           LL_EXTI_ClearFlag_32_63
1369   * @param  ExtiLine This parameter can be a combination of the following values:
1370   *         @arg @ref LL_EXTI_LINE_32 (*)
1371   *         @arg @ref LL_EXTI_LINE_33 (*)
1372   *         @arg @ref LL_EXTI_LINE_38
1373   *         @arg @ref LL_EXTI_LINE_39
1374   *         @arg @ref LL_EXTI_LINE_40
1375   *         @arg @ref LL_EXTI_LINE_41
1376   * @note   (*): Available in some devices
1377   * @retval None
1378   */
LL_EXTI_ClearFlag_32_63(uint32_t ExtiLine)1379 __STATIC_INLINE void LL_EXTI_ClearFlag_32_63(uint32_t ExtiLine)
1380 {
1381   WRITE_REG(EXTI->PR2, ExtiLine);
1382 }
1383 
1384 /**
1385   * @}
1386   */
1387 
1388 #if defined(USE_FULL_LL_DRIVER)
1389 /** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions
1390   * @{
1391   */
1392 
1393 uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct);
1394 uint32_t LL_EXTI_DeInit(void);
1395 void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct);
1396 
1397 
1398 /**
1399   * @}
1400   */
1401 #endif /* USE_FULL_LL_DRIVER */
1402 
1403 /**
1404   * @}
1405   */
1406 
1407 /**
1408   * @}
1409   */
1410 
1411 #endif /* EXTI */
1412 
1413 /**
1414   * @}
1415   */
1416 
1417 #ifdef __cplusplus
1418 }
1419 #endif
1420 
1421 #endif /* __STM32G4xx_LL_EXTI_H */
1422 
1423