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