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