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