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