Subversion Repositories AFRtranscoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_ll_exti.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of EXTI LL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * Copyright (c) 2016 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 STM32F1xx_LL_EXTI_H
21
#define STM32F1xx_LL_EXTI_H
22
 
23
#ifdef __cplusplus
24
extern "C" {
25
#endif
26
 
27
/* Includes ------------------------------------------------------------------*/
28
#include "stm32f1xx.h"
29
 
30
/** @addtogroup STM32F1xx_LL_Driver
31
  * @{
32
  */
33
 
34
#if defined (EXTI)
35
 
36
/** @defgroup EXTI_LL EXTI
37
  * @{
38
  */
39
 
40
/* Private types -------------------------------------------------------------*/
41
/* Private variables ---------------------------------------------------------*/
42
/* Private constants ---------------------------------------------------------*/
43
/* Private Macros ------------------------------------------------------------*/
44
#if defined(USE_FULL_LL_DRIVER)
45
/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros
46
  * @{
47
  */
48
/**
49
  * @}
50
  */
51
#endif /*USE_FULL_LL_DRIVER*/
52
/* Exported types ------------------------------------------------------------*/
53
#if defined(USE_FULL_LL_DRIVER)
54
/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure
55
  * @{
56
  */
57
typedef struct
58
{
59
 
60
  uint32_t Line_0_31;           /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31
61
                                     This parameter can be any combination of @ref EXTI_LL_EC_LINE */
62
 
63
  FunctionalState LineCommand;  /*!< Specifies the new state of the selected EXTI lines.
64
                                     This parameter can be set either to ENABLE or DISABLE */
65
 
66
  uint8_t Mode;                 /*!< Specifies the mode for the EXTI lines.
67
                                     This parameter can be a value of @ref EXTI_LL_EC_MODE. */
68
 
69
  uint8_t Trigger;              /*!< Specifies the trigger signal active edge for the EXTI lines.
70
                                     This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */
71
} LL_EXTI_InitTypeDef;
72
 
73
/**
74
  * @}
75
  */
76
#endif /*USE_FULL_LL_DRIVER*/
77
 
78
/* Exported constants --------------------------------------------------------*/
79
/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants
80
  * @{
81
  */
82
 
83
/** @defgroup EXTI_LL_EC_LINE LINE
84
  * @{
85
  */
86
#define LL_EXTI_LINE_0                 EXTI_IMR_IM0           /*!< Extended line 0 */
87
#define LL_EXTI_LINE_1                 EXTI_IMR_IM1           /*!< Extended line 1 */
88
#define LL_EXTI_LINE_2                 EXTI_IMR_IM2           /*!< Extended line 2 */
89
#define LL_EXTI_LINE_3                 EXTI_IMR_IM3           /*!< Extended line 3 */
90
#define LL_EXTI_LINE_4                 EXTI_IMR_IM4           /*!< Extended line 4 */
91
#define LL_EXTI_LINE_5                 EXTI_IMR_IM5           /*!< Extended line 5 */
92
#define LL_EXTI_LINE_6                 EXTI_IMR_IM6           /*!< Extended line 6 */
93
#define LL_EXTI_LINE_7                 EXTI_IMR_IM7           /*!< Extended line 7 */
94
#define LL_EXTI_LINE_8                 EXTI_IMR_IM8           /*!< Extended line 8 */
95
#define LL_EXTI_LINE_9                 EXTI_IMR_IM9           /*!< Extended line 9 */
96
#define LL_EXTI_LINE_10                EXTI_IMR_IM10          /*!< Extended line 10 */
97
#define LL_EXTI_LINE_11                EXTI_IMR_IM11          /*!< Extended line 11 */
98
#define LL_EXTI_LINE_12                EXTI_IMR_IM12          /*!< Extended line 12 */
99
#define LL_EXTI_LINE_13                EXTI_IMR_IM13          /*!< Extended line 13 */
100
#define LL_EXTI_LINE_14                EXTI_IMR_IM14          /*!< Extended line 14 */
101
#define LL_EXTI_LINE_15                EXTI_IMR_IM15          /*!< Extended line 15 */
102
#if defined(EXTI_IMR_IM16)
103
#define LL_EXTI_LINE_16                EXTI_IMR_IM16          /*!< Extended line 16 */
104
#endif
105
#define LL_EXTI_LINE_17                EXTI_IMR_IM17          /*!< Extended line 17 */
106
#if defined(EXTI_IMR_IM18)
107
#define LL_EXTI_LINE_18                EXTI_IMR_IM18          /*!< Extended line 18 */
108
#endif
109
#if defined(EXTI_IMR_IM19)
110
#define LL_EXTI_LINE_19                EXTI_IMR_IM19          /*!< Extended line 19 */
111
#endif
112
#if defined(EXTI_IMR_IM20)
113
#define LL_EXTI_LINE_20                EXTI_IMR_IM20          /*!< Extended line 20 */
114
#endif
115
#if defined(EXTI_IMR_IM21)
116
#define LL_EXTI_LINE_21                EXTI_IMR_IM21          /*!< Extended line 21 */
117
#endif
118
#if defined(EXTI_IMR_IM22)
119
#define LL_EXTI_LINE_22                EXTI_IMR_IM22          /*!< Extended line 22 */
120
#endif
121
#if defined(EXTI_IMR_IM23)
122
#define LL_EXTI_LINE_23                EXTI_IMR_IM23          /*!< Extended line 23 */
123
#endif
124
#if defined(EXTI_IMR_IM24)
125
#define LL_EXTI_LINE_24                EXTI_IMR_IM24          /*!< Extended line 24 */
126
#endif
127
#if defined(EXTI_IMR_IM25)
128
#define LL_EXTI_LINE_25                EXTI_IMR_IM25          /*!< Extended line 25 */
129
#endif
130
#if defined(EXTI_IMR_IM26)
131
#define LL_EXTI_LINE_26                EXTI_IMR_IM26          /*!< Extended line 26 */
132
#endif
133
#if defined(EXTI_IMR_IM27)
134
#define LL_EXTI_LINE_27                EXTI_IMR_IM27          /*!< Extended line 27 */
135
#endif
136
#if defined(EXTI_IMR_IM28)
137
#define LL_EXTI_LINE_28                EXTI_IMR_IM28          /*!< Extended line 28 */
138
#endif
139
#if defined(EXTI_IMR_IM29)
140
#define LL_EXTI_LINE_29                EXTI_IMR_IM29          /*!< Extended line 29 */
141
#endif
142
#if defined(EXTI_IMR_IM30)
143
#define LL_EXTI_LINE_30                EXTI_IMR_IM30          /*!< Extended line 30 */
144
#endif
145
#if defined(EXTI_IMR_IM31)
146
#define LL_EXTI_LINE_31                EXTI_IMR_IM31          /*!< Extended line 31 */
147
#endif
148
#define LL_EXTI_LINE_ALL_0_31          EXTI_IMR_IM            /*!< All Extended line not reserved*/
149
 
150
 
151
#define LL_EXTI_LINE_ALL               (0xFFFFFFFFU)  /*!< All Extended line */
152
 
153
#if defined(USE_FULL_LL_DRIVER)
154
#define LL_EXTI_LINE_NONE              (0x00000000U)  /*!< None Extended line */
155
#endif /*USE_FULL_LL_DRIVER*/
156
 
157
/**
158
  * @}
159
  */
160
#if defined(USE_FULL_LL_DRIVER)
161
 
162
/** @defgroup EXTI_LL_EC_MODE Mode
163
  * @{
164
  */
165
#define LL_EXTI_MODE_IT                 ((uint8_t)0x00) /*!< Interrupt Mode */
166
#define LL_EXTI_MODE_EVENT              ((uint8_t)0x01) /*!< Event Mode */
167
#define LL_EXTI_MODE_IT_EVENT           ((uint8_t)0x02) /*!< Interrupt & Event Mode */
168
/**
169
  * @}
170
  */
171
 
172
/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger
173
  * @{
174
  */
175
#define LL_EXTI_TRIGGER_NONE            ((uint8_t)0x00) /*!< No Trigger Mode */
176
#define LL_EXTI_TRIGGER_RISING          ((uint8_t)0x01) /*!< Trigger Rising Mode */
177
#define LL_EXTI_TRIGGER_FALLING         ((uint8_t)0x02) /*!< Trigger Falling Mode */
178
#define LL_EXTI_TRIGGER_RISING_FALLING  ((uint8_t)0x03) /*!< Trigger Rising & Falling Mode */
179
 
180
/**
181
  * @}
182
  */
183
 
184
 
185
#endif /*USE_FULL_LL_DRIVER*/
186
 
187
 
188
/**
189
  * @}
190
  */
191
 
192
/* Exported macro ------------------------------------------------------------*/
193
/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros
194
  * @{
195
  */
196
 
197
/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros
198
  * @{
199
  */
200
 
201
/**
202
  * @brief  Write a value in EXTI register
203
  * @param  __REG__ Register to be written
204
  * @param  __VALUE__ Value to be written in the register
205
  * @retval None
206
  */
207
#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__))
208
 
209
/**
210
  * @brief  Read a value in EXTI register
211
  * @param  __REG__ Register to be read
212
  * @retval Register value
213
  */
214
#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__)
215
/**
216
  * @}
217
  */
218
 
219
 
220
/**
221
  * @}
222
  */
223
 
224
 
225
 
226
/* Exported functions --------------------------------------------------------*/
227
/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions
228
 * @{
229
 */
230
/** @defgroup EXTI_LL_EF_IT_Management IT_Management
231
  * @{
232
  */
233
 
234
/**
235
  * @brief  Enable ExtiLine Interrupt request for Lines in range 0 to 31
236
  * @note The reset value for the direct or internal lines (see RM)
237
  *       is set to 1 in order to enable the interrupt by default.
238
  *       Bits are set automatically at Power on.
239
  * @rmtoll IMR         IMx           LL_EXTI_EnableIT_0_31
240
  * @param  ExtiLine This parameter can be one of the following values:
241
  *         @arg @ref LL_EXTI_LINE_0
242
  *         @arg @ref LL_EXTI_LINE_1
243
  *         @arg @ref LL_EXTI_LINE_2
244
  *         @arg @ref LL_EXTI_LINE_3
245
  *         @arg @ref LL_EXTI_LINE_4
246
  *         @arg @ref LL_EXTI_LINE_5
247
  *         @arg @ref LL_EXTI_LINE_6
248
  *         @arg @ref LL_EXTI_LINE_7
249
  *         @arg @ref LL_EXTI_LINE_8
250
  *         @arg @ref LL_EXTI_LINE_9
251
  *         @arg @ref LL_EXTI_LINE_10
252
  *         @arg @ref LL_EXTI_LINE_11
253
  *         @arg @ref LL_EXTI_LINE_12
254
  *         @arg @ref LL_EXTI_LINE_13
255
  *         @arg @ref LL_EXTI_LINE_14
256
  *         @arg @ref LL_EXTI_LINE_15
257
  *         @arg @ref LL_EXTI_LINE_16
258
  *         @arg @ref LL_EXTI_LINE_17
259
  *         @arg @ref LL_EXTI_LINE_18
260
  *         @arg @ref LL_EXTI_LINE_19
261
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
262
  * @note   Please check each device line mapping for EXTI Line availability
263
  * @retval None
264
  */
265
__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine)
266
{
267
  SET_BIT(EXTI->IMR, ExtiLine);
268
}
269
 
270
/**
271
  * @brief  Disable ExtiLine Interrupt request for Lines in range 0 to 31
272
  * @note The reset value for the direct or internal lines (see RM)
273
  *       is set to 1 in order to enable the interrupt by default.
274
  *       Bits are set automatically at Power on.
275
  * @rmtoll IMR         IMx           LL_EXTI_DisableIT_0_31
276
  * @param  ExtiLine This parameter can be one of the following values:
277
  *         @arg @ref LL_EXTI_LINE_0
278
  *         @arg @ref LL_EXTI_LINE_1
279
  *         @arg @ref LL_EXTI_LINE_2
280
  *         @arg @ref LL_EXTI_LINE_3
281
  *         @arg @ref LL_EXTI_LINE_4
282
  *         @arg @ref LL_EXTI_LINE_5
283
  *         @arg @ref LL_EXTI_LINE_6
284
  *         @arg @ref LL_EXTI_LINE_7
285
  *         @arg @ref LL_EXTI_LINE_8
286
  *         @arg @ref LL_EXTI_LINE_9
287
  *         @arg @ref LL_EXTI_LINE_10
288
  *         @arg @ref LL_EXTI_LINE_11
289
  *         @arg @ref LL_EXTI_LINE_12
290
  *         @arg @ref LL_EXTI_LINE_13
291
  *         @arg @ref LL_EXTI_LINE_14
292
  *         @arg @ref LL_EXTI_LINE_15
293
  *         @arg @ref LL_EXTI_LINE_16
294
  *         @arg @ref LL_EXTI_LINE_17
295
  *         @arg @ref LL_EXTI_LINE_18
296
  *         @arg @ref LL_EXTI_LINE_19
297
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
298
  * @note   Please check each device line mapping for EXTI Line availability
299
  * @retval None
300
  */
301
__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine)
302
{
303
  CLEAR_BIT(EXTI->IMR, ExtiLine);
304
}
305
 
306
 
307
/**
308
  * @brief  Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31
309
  * @note The reset value for the direct or internal lines (see RM)
310
  *       is set to 1 in order to enable the interrupt by default.
311
  *       Bits are set automatically at Power on.
312
  * @rmtoll IMR         IMx           LL_EXTI_IsEnabledIT_0_31
313
  * @param  ExtiLine This parameter can be one of the following values:
314
  *         @arg @ref LL_EXTI_LINE_0
315
  *         @arg @ref LL_EXTI_LINE_1
316
  *         @arg @ref LL_EXTI_LINE_2
317
  *         @arg @ref LL_EXTI_LINE_3
318
  *         @arg @ref LL_EXTI_LINE_4
319
  *         @arg @ref LL_EXTI_LINE_5
320
  *         @arg @ref LL_EXTI_LINE_6
321
  *         @arg @ref LL_EXTI_LINE_7
322
  *         @arg @ref LL_EXTI_LINE_8
323
  *         @arg @ref LL_EXTI_LINE_9
324
  *         @arg @ref LL_EXTI_LINE_10
325
  *         @arg @ref LL_EXTI_LINE_11
326
  *         @arg @ref LL_EXTI_LINE_12
327
  *         @arg @ref LL_EXTI_LINE_13
328
  *         @arg @ref LL_EXTI_LINE_14
329
  *         @arg @ref LL_EXTI_LINE_15
330
  *         @arg @ref LL_EXTI_LINE_16
331
  *         @arg @ref LL_EXTI_LINE_17
332
  *         @arg @ref LL_EXTI_LINE_18
333
  *         @arg @ref LL_EXTI_LINE_19
334
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
335
  * @note   Please check each device line mapping for EXTI Line availability
336
  * @retval State of bit (1 or 0).
337
  */
338
__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine)
339
{
340
  return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine));
341
}
342
 
343
 
344
/**
345
  * @}
346
  */
347
 
348
/** @defgroup EXTI_LL_EF_Event_Management Event_Management
349
  * @{
350
  */
351
 
352
/**
353
  * @brief  Enable ExtiLine Event request for Lines in range 0 to 31
354
  * @rmtoll EMR         EMx           LL_EXTI_EnableEvent_0_31
355
  * @param  ExtiLine This parameter can be one of the following values:
356
  *         @arg @ref LL_EXTI_LINE_0
357
  *         @arg @ref LL_EXTI_LINE_1
358
  *         @arg @ref LL_EXTI_LINE_2
359
  *         @arg @ref LL_EXTI_LINE_3
360
  *         @arg @ref LL_EXTI_LINE_4
361
  *         @arg @ref LL_EXTI_LINE_5
362
  *         @arg @ref LL_EXTI_LINE_6
363
  *         @arg @ref LL_EXTI_LINE_7
364
  *         @arg @ref LL_EXTI_LINE_8
365
  *         @arg @ref LL_EXTI_LINE_9
366
  *         @arg @ref LL_EXTI_LINE_10
367
  *         @arg @ref LL_EXTI_LINE_11
368
  *         @arg @ref LL_EXTI_LINE_12
369
  *         @arg @ref LL_EXTI_LINE_13
370
  *         @arg @ref LL_EXTI_LINE_14
371
  *         @arg @ref LL_EXTI_LINE_15
372
  *         @arg @ref LL_EXTI_LINE_16
373
  *         @arg @ref LL_EXTI_LINE_17
374
  *         @arg @ref LL_EXTI_LINE_18
375
  *         @arg @ref LL_EXTI_LINE_19
376
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
377
  * @note   Please check each device line mapping for EXTI Line availability
378
  * @retval None
379
  */
380
__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine)
381
{
382
  SET_BIT(EXTI->EMR, ExtiLine);
383
 
384
}
385
 
386
 
387
/**
388
  * @brief  Disable ExtiLine Event request for Lines in range 0 to 31
389
  * @rmtoll EMR         EMx           LL_EXTI_DisableEvent_0_31
390
  * @param  ExtiLine This parameter can be one of the following values:
391
  *         @arg @ref LL_EXTI_LINE_0
392
  *         @arg @ref LL_EXTI_LINE_1
393
  *         @arg @ref LL_EXTI_LINE_2
394
  *         @arg @ref LL_EXTI_LINE_3
395
  *         @arg @ref LL_EXTI_LINE_4
396
  *         @arg @ref LL_EXTI_LINE_5
397
  *         @arg @ref LL_EXTI_LINE_6
398
  *         @arg @ref LL_EXTI_LINE_7
399
  *         @arg @ref LL_EXTI_LINE_8
400
  *         @arg @ref LL_EXTI_LINE_9
401
  *         @arg @ref LL_EXTI_LINE_10
402
  *         @arg @ref LL_EXTI_LINE_11
403
  *         @arg @ref LL_EXTI_LINE_12
404
  *         @arg @ref LL_EXTI_LINE_13
405
  *         @arg @ref LL_EXTI_LINE_14
406
  *         @arg @ref LL_EXTI_LINE_15
407
  *         @arg @ref LL_EXTI_LINE_16
408
  *         @arg @ref LL_EXTI_LINE_17
409
  *         @arg @ref LL_EXTI_LINE_18
410
  *         @arg @ref LL_EXTI_LINE_19
411
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
412
  * @note   Please check each device line mapping for EXTI Line availability
413
  * @retval None
414
  */
415
__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine)
416
{
417
  CLEAR_BIT(EXTI->EMR, ExtiLine);
418
}
419
 
420
 
421
/**
422
  * @brief  Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31
423
  * @rmtoll EMR         EMx           LL_EXTI_IsEnabledEvent_0_31
424
  * @param  ExtiLine This parameter can be one of the following values:
425
  *         @arg @ref LL_EXTI_LINE_0
426
  *         @arg @ref LL_EXTI_LINE_1
427
  *         @arg @ref LL_EXTI_LINE_2
428
  *         @arg @ref LL_EXTI_LINE_3
429
  *         @arg @ref LL_EXTI_LINE_4
430
  *         @arg @ref LL_EXTI_LINE_5
431
  *         @arg @ref LL_EXTI_LINE_6
432
  *         @arg @ref LL_EXTI_LINE_7
433
  *         @arg @ref LL_EXTI_LINE_8
434
  *         @arg @ref LL_EXTI_LINE_9
435
  *         @arg @ref LL_EXTI_LINE_10
436
  *         @arg @ref LL_EXTI_LINE_11
437
  *         @arg @ref LL_EXTI_LINE_12
438
  *         @arg @ref LL_EXTI_LINE_13
439
  *         @arg @ref LL_EXTI_LINE_14
440
  *         @arg @ref LL_EXTI_LINE_15
441
  *         @arg @ref LL_EXTI_LINE_16
442
  *         @arg @ref LL_EXTI_LINE_17
443
  *         @arg @ref LL_EXTI_LINE_18
444
  *         @arg @ref LL_EXTI_LINE_19
445
  *         @arg @ref LL_EXTI_LINE_ALL_0_31
446
  * @note   Please check each device line mapping for EXTI Line availability
447
  * @retval State of bit (1 or 0).
448
  */
449
__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine)
450
{
451
  return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine));
452
 
453
}
454
 
455
 
456
/**
457
  * @}
458
  */
459
 
460
/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management
461
  * @{
462
  */
463
 
464
/**
465
  * @brief  Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31
466
  * @note The configurable wakeup lines are edge-triggered. No glitch must be
467
  *       generated on these lines. If a rising edge on a configurable interrupt
468
  *       line occurs during a write operation in the EXTI_RTSR register, the
469
  *       pending bit is not set.
470
  *       Rising and falling edge triggers can be set for
471
  *       the same interrupt line. In this case, both generate a trigger
472
  *       condition.
473
  * @rmtoll RTSR        RTx           LL_EXTI_EnableRisingTrig_0_31
474
  * @param  ExtiLine This parameter can be a combination of the following values:
475
  *         @arg @ref LL_EXTI_LINE_0
476
  *         @arg @ref LL_EXTI_LINE_1
477
  *         @arg @ref LL_EXTI_LINE_2
478
  *         @arg @ref LL_EXTI_LINE_3
479
  *         @arg @ref LL_EXTI_LINE_4
480
  *         @arg @ref LL_EXTI_LINE_5
481
  *         @arg @ref LL_EXTI_LINE_6
482
  *         @arg @ref LL_EXTI_LINE_7
483
  *         @arg @ref LL_EXTI_LINE_8
484
  *         @arg @ref LL_EXTI_LINE_9
485
  *         @arg @ref LL_EXTI_LINE_10
486
  *         @arg @ref LL_EXTI_LINE_11
487
  *         @arg @ref LL_EXTI_LINE_12
488
  *         @arg @ref LL_EXTI_LINE_13
489
  *         @arg @ref LL_EXTI_LINE_14
490
  *         @arg @ref LL_EXTI_LINE_15
491
  *         @arg @ref LL_EXTI_LINE_16
492
  *         @arg @ref LL_EXTI_LINE_18
493
  *         @arg @ref LL_EXTI_LINE_19
494
  * @note   Please check each device line mapping for EXTI Line availability
495
  * @retval None
496
  */
497
__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine)
498
{
499
  SET_BIT(EXTI->RTSR, ExtiLine);
500
 
501
}
502
 
503
 
504
/**
505
  * @brief  Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31
506
  * @note The configurable wakeup lines are edge-triggered. No glitch must be
507
  *       generated on these lines. If a rising edge on a configurable interrupt
508
  *       line occurs during a write operation in the EXTI_RTSR register, the
509
  *       pending bit is not set.
510
  *       Rising and falling edge triggers can be set for
511
  *       the same interrupt line. In this case, both generate a trigger
512
  *       condition.
513
  * @rmtoll RTSR        RTx           LL_EXTI_DisableRisingTrig_0_31
514
  * @param  ExtiLine This parameter can be a combination of the following values:
515
  *         @arg @ref LL_EXTI_LINE_0
516
  *         @arg @ref LL_EXTI_LINE_1
517
  *         @arg @ref LL_EXTI_LINE_2
518
  *         @arg @ref LL_EXTI_LINE_3
519
  *         @arg @ref LL_EXTI_LINE_4
520
  *         @arg @ref LL_EXTI_LINE_5
521
  *         @arg @ref LL_EXTI_LINE_6
522
  *         @arg @ref LL_EXTI_LINE_7
523
  *         @arg @ref LL_EXTI_LINE_8
524
  *         @arg @ref LL_EXTI_LINE_9
525
  *         @arg @ref LL_EXTI_LINE_10
526
  *         @arg @ref LL_EXTI_LINE_11
527
  *         @arg @ref LL_EXTI_LINE_12
528
  *         @arg @ref LL_EXTI_LINE_13
529
  *         @arg @ref LL_EXTI_LINE_14
530
  *         @arg @ref LL_EXTI_LINE_15
531
  *         @arg @ref LL_EXTI_LINE_16
532
  *         @arg @ref LL_EXTI_LINE_18
533
  *         @arg @ref LL_EXTI_LINE_19
534
  * @note   Please check each device line mapping for EXTI Line availability
535
  * @retval None
536
  */
537
__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine)
538
{
539
  CLEAR_BIT(EXTI->RTSR, ExtiLine);
540
 
541
}
542
 
543
 
544
/**
545
  * @brief  Check if rising edge trigger is enabled for Lines in range 0 to 31
546
  * @rmtoll RTSR        RTx           LL_EXTI_IsEnabledRisingTrig_0_31
547
  * @param  ExtiLine This parameter can be a combination of the following values:
548
  *         @arg @ref LL_EXTI_LINE_0
549
  *         @arg @ref LL_EXTI_LINE_1
550
  *         @arg @ref LL_EXTI_LINE_2
551
  *         @arg @ref LL_EXTI_LINE_3
552
  *         @arg @ref LL_EXTI_LINE_4
553
  *         @arg @ref LL_EXTI_LINE_5
554
  *         @arg @ref LL_EXTI_LINE_6
555
  *         @arg @ref LL_EXTI_LINE_7
556
  *         @arg @ref LL_EXTI_LINE_8
557
  *         @arg @ref LL_EXTI_LINE_9
558
  *         @arg @ref LL_EXTI_LINE_10
559
  *         @arg @ref LL_EXTI_LINE_11
560
  *         @arg @ref LL_EXTI_LINE_12
561
  *         @arg @ref LL_EXTI_LINE_13
562
  *         @arg @ref LL_EXTI_LINE_14
563
  *         @arg @ref LL_EXTI_LINE_15
564
  *         @arg @ref LL_EXTI_LINE_16
565
  *         @arg @ref LL_EXTI_LINE_18
566
  *         @arg @ref LL_EXTI_LINE_19
567
  * @note   Please check each device line mapping for EXTI Line availability
568
  * @retval State of bit (1 or 0).
569
  */
570
__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine)
571
{
572
  return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine));
573
}
574
 
575
 
576
/**
577
  * @}
578
  */
579
 
580
/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management
581
  * @{
582
  */
583
 
584
/**
585
  * @brief  Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31
586
  * @note The configurable wakeup lines are edge-triggered. No glitch must be
587
  *       generated on these lines. If a falling edge on a configurable interrupt
588
  *       line occurs during a write operation in the EXTI_FTSR register, the
589
  *       pending bit is not set.
590
  *       Rising and falling edge triggers can be set for
591
  *       the same interrupt line. In this case, both generate a trigger
592
  *       condition.
593
  * @rmtoll FTSR        FTx           LL_EXTI_EnableFallingTrig_0_31
594
  * @param  ExtiLine This parameter can be a combination of the following values:
595
  *         @arg @ref LL_EXTI_LINE_0
596
  *         @arg @ref LL_EXTI_LINE_1
597
  *         @arg @ref LL_EXTI_LINE_2
598
  *         @arg @ref LL_EXTI_LINE_3
599
  *         @arg @ref LL_EXTI_LINE_4
600
  *         @arg @ref LL_EXTI_LINE_5
601
  *         @arg @ref LL_EXTI_LINE_6
602
  *         @arg @ref LL_EXTI_LINE_7
603
  *         @arg @ref LL_EXTI_LINE_8
604
  *         @arg @ref LL_EXTI_LINE_9
605
  *         @arg @ref LL_EXTI_LINE_10
606
  *         @arg @ref LL_EXTI_LINE_11
607
  *         @arg @ref LL_EXTI_LINE_12
608
  *         @arg @ref LL_EXTI_LINE_13
609
  *         @arg @ref LL_EXTI_LINE_14
610
  *         @arg @ref LL_EXTI_LINE_15
611
  *         @arg @ref LL_EXTI_LINE_16
612
  *         @arg @ref LL_EXTI_LINE_18
613
  *         @arg @ref LL_EXTI_LINE_19
614
  * @note   Please check each device line mapping for EXTI Line availability
615
  * @retval None
616
  */
617
__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine)
618
{
619
  SET_BIT(EXTI->FTSR, ExtiLine);
620
}
621
 
622
 
623
/**
624
  * @brief  Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31
625
  * @note The configurable wakeup lines are edge-triggered. No glitch must be
626
  *       generated on these lines. If a Falling edge on a configurable interrupt
627
  *       line occurs during a write operation in the EXTI_FTSR register, the
628
  *       pending bit is not set.
629
  *       Rising and falling edge triggers can be set for the same interrupt line.
630
  *       In this case, both generate a trigger condition.
631
  * @rmtoll FTSR        FTx           LL_EXTI_DisableFallingTrig_0_31
632
  * @param  ExtiLine This parameter can be a combination of the following values:
633
  *         @arg @ref LL_EXTI_LINE_0
634
  *         @arg @ref LL_EXTI_LINE_1
635
  *         @arg @ref LL_EXTI_LINE_2
636
  *         @arg @ref LL_EXTI_LINE_3
637
  *         @arg @ref LL_EXTI_LINE_4
638
  *         @arg @ref LL_EXTI_LINE_5
639
  *         @arg @ref LL_EXTI_LINE_6
640
  *         @arg @ref LL_EXTI_LINE_7
641
  *         @arg @ref LL_EXTI_LINE_8
642
  *         @arg @ref LL_EXTI_LINE_9
643
  *         @arg @ref LL_EXTI_LINE_10
644
  *         @arg @ref LL_EXTI_LINE_11
645
  *         @arg @ref LL_EXTI_LINE_12
646
  *         @arg @ref LL_EXTI_LINE_13
647
  *         @arg @ref LL_EXTI_LINE_14
648
  *         @arg @ref LL_EXTI_LINE_15
649
  *         @arg @ref LL_EXTI_LINE_16
650
  *         @arg @ref LL_EXTI_LINE_18
651
  *         @arg @ref LL_EXTI_LINE_19
652
  * @note   Please check each device line mapping for EXTI Line availability
653
  * @retval None
654
  */
655
__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine)
656
{
657
  CLEAR_BIT(EXTI->FTSR, ExtiLine);
658
}
659
 
660
 
661
/**
662
  * @brief  Check if falling edge trigger is enabled for Lines in range 0 to 31
663
  * @rmtoll FTSR        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_18
683
  *         @arg @ref LL_EXTI_LINE_19
684
  * @note   Please check each device line mapping for EXTI Line availability
685
  * @retval State of bit (1 or 0).
686
  */
687
__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine)
688
{
689
  return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine));
690
}
691
 
692
 
693
/**
694
  * @}
695
  */
696
 
697
/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management
698
  * @{
699
  */
700
 
701
/**
702
  * @brief  Generate a software Interrupt Event for Lines in range 0 to 31
703
  * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to
704
  *       this bit when it is at '0' sets the corresponding pending bit in EXTI_PR
705
  *       resulting in an interrupt request generation.
706
  *       This bit is cleared by clearing the corresponding bit in the EXTI_PR
707
  *       register (by writing a 1 into the bit)
708
  * @rmtoll SWIER       SWIx          LL_EXTI_GenerateSWI_0_31
709
  * @param  ExtiLine This parameter can be a combination of the following values:
710
  *         @arg @ref LL_EXTI_LINE_0
711
  *         @arg @ref LL_EXTI_LINE_1
712
  *         @arg @ref LL_EXTI_LINE_2
713
  *         @arg @ref LL_EXTI_LINE_3
714
  *         @arg @ref LL_EXTI_LINE_4
715
  *         @arg @ref LL_EXTI_LINE_5
716
  *         @arg @ref LL_EXTI_LINE_6
717
  *         @arg @ref LL_EXTI_LINE_7
718
  *         @arg @ref LL_EXTI_LINE_8
719
  *         @arg @ref LL_EXTI_LINE_9
720
  *         @arg @ref LL_EXTI_LINE_10
721
  *         @arg @ref LL_EXTI_LINE_11
722
  *         @arg @ref LL_EXTI_LINE_12
723
  *         @arg @ref LL_EXTI_LINE_13
724
  *         @arg @ref LL_EXTI_LINE_14
725
  *         @arg @ref LL_EXTI_LINE_15
726
  *         @arg @ref LL_EXTI_LINE_16
727
  *         @arg @ref LL_EXTI_LINE_18
728
  *         @arg @ref LL_EXTI_LINE_19
729
  * @note   Please check each device line mapping for EXTI Line availability
730
  * @retval None
731
  */
732
__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine)
733
{
734
  SET_BIT(EXTI->SWIER, ExtiLine);
735
}
736
 
737
 
738
/**
739
  * @}
740
  */
741
 
742
/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management
743
  * @{
744
  */
745
 
746
/**
747
  * @brief  Check if the ExtLine Flag is set or not for Lines in range 0 to 31
748
  * @note This bit is set when the selected edge event arrives on the interrupt
749
  *       line. This bit is cleared by writing a 1 to the bit.
750
  * @rmtoll PR          PIFx           LL_EXTI_IsActiveFlag_0_31
751
  * @param  ExtiLine This parameter can be a combination of the following values:
752
  *         @arg @ref LL_EXTI_LINE_0
753
  *         @arg @ref LL_EXTI_LINE_1
754
  *         @arg @ref LL_EXTI_LINE_2
755
  *         @arg @ref LL_EXTI_LINE_3
756
  *         @arg @ref LL_EXTI_LINE_4
757
  *         @arg @ref LL_EXTI_LINE_5
758
  *         @arg @ref LL_EXTI_LINE_6
759
  *         @arg @ref LL_EXTI_LINE_7
760
  *         @arg @ref LL_EXTI_LINE_8
761
  *         @arg @ref LL_EXTI_LINE_9
762
  *         @arg @ref LL_EXTI_LINE_10
763
  *         @arg @ref LL_EXTI_LINE_11
764
  *         @arg @ref LL_EXTI_LINE_12
765
  *         @arg @ref LL_EXTI_LINE_13
766
  *         @arg @ref LL_EXTI_LINE_14
767
  *         @arg @ref LL_EXTI_LINE_15
768
  *         @arg @ref LL_EXTI_LINE_16
769
  *         @arg @ref LL_EXTI_LINE_18
770
  *         @arg @ref LL_EXTI_LINE_19
771
  * @note   Please check each device line mapping for EXTI Line availability
772
  * @retval State of bit (1 or 0).
773
  */
774
__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine)
775
{
776
  return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine));
777
}
778
 
779
 
780
/**
781
  * @brief  Read ExtLine Combination Flag for Lines in range 0 to 31
782
  * @note This bit is set when the selected edge event arrives on the interrupt
783
  *       line. This bit is cleared by writing a 1 to the bit.
784
  * @rmtoll PR          PIFx           LL_EXTI_ReadFlag_0_31
785
  * @param  ExtiLine This parameter can be a combination of the following values:
786
  *         @arg @ref LL_EXTI_LINE_0
787
  *         @arg @ref LL_EXTI_LINE_1
788
  *         @arg @ref LL_EXTI_LINE_2
789
  *         @arg @ref LL_EXTI_LINE_3
790
  *         @arg @ref LL_EXTI_LINE_4
791
  *         @arg @ref LL_EXTI_LINE_5
792
  *         @arg @ref LL_EXTI_LINE_6
793
  *         @arg @ref LL_EXTI_LINE_7
794
  *         @arg @ref LL_EXTI_LINE_8
795
  *         @arg @ref LL_EXTI_LINE_9
796
  *         @arg @ref LL_EXTI_LINE_10
797
  *         @arg @ref LL_EXTI_LINE_11
798
  *         @arg @ref LL_EXTI_LINE_12
799
  *         @arg @ref LL_EXTI_LINE_13
800
  *         @arg @ref LL_EXTI_LINE_14
801
  *         @arg @ref LL_EXTI_LINE_15
802
  *         @arg @ref LL_EXTI_LINE_16
803
  *         @arg @ref LL_EXTI_LINE_18
804
  *         @arg @ref LL_EXTI_LINE_19
805
  * @note   Please check each device line mapping for EXTI Line availability
806
  * @retval @note This bit is set when the selected edge event arrives on the interrupt
807
  */
808
__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine)
809
{
810
  return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine));
811
}
812
 
813
 
814
/**
815
  * @brief  Clear ExtLine Flags  for Lines in range 0 to 31
816
  * @note This bit is set when the selected edge event arrives on the interrupt
817
  *       line. This bit is cleared by writing a 1 to the bit.
818
  * @rmtoll PR          PIFx           LL_EXTI_ClearFlag_0_31
819
  * @param  ExtiLine This parameter can be a combination of the following values:
820
  *         @arg @ref LL_EXTI_LINE_0
821
  *         @arg @ref LL_EXTI_LINE_1
822
  *         @arg @ref LL_EXTI_LINE_2
823
  *         @arg @ref LL_EXTI_LINE_3
824
  *         @arg @ref LL_EXTI_LINE_4
825
  *         @arg @ref LL_EXTI_LINE_5
826
  *         @arg @ref LL_EXTI_LINE_6
827
  *         @arg @ref LL_EXTI_LINE_7
828
  *         @arg @ref LL_EXTI_LINE_8
829
  *         @arg @ref LL_EXTI_LINE_9
830
  *         @arg @ref LL_EXTI_LINE_10
831
  *         @arg @ref LL_EXTI_LINE_11
832
  *         @arg @ref LL_EXTI_LINE_12
833
  *         @arg @ref LL_EXTI_LINE_13
834
  *         @arg @ref LL_EXTI_LINE_14
835
  *         @arg @ref LL_EXTI_LINE_15
836
  *         @arg @ref LL_EXTI_LINE_16
837
  *         @arg @ref LL_EXTI_LINE_18
838
  *         @arg @ref LL_EXTI_LINE_19
839
  * @note   Please check each device line mapping for EXTI Line availability
840
  * @retval None
841
  */
842
__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine)
843
{
844
  WRITE_REG(EXTI->PR, ExtiLine);
845
}
846
 
847
 
848
/**
849
  * @}
850
  */
851
 
852
#if defined(USE_FULL_LL_DRIVER)
853
/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions
854
  * @{
855
  */
856
 
857
uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct);
858
uint32_t LL_EXTI_DeInit(void);
859
void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct);
860
 
861
 
862
/**
863
  * @}
864
  */
865
#endif /* USE_FULL_LL_DRIVER */
866
 
867
/**
868
  * @}
869
  */
870
 
871
/**
872
  * @}
873
  */
874
 
875
#endif /* EXTI */
876
 
877
/**
878
  * @}
879
  */
880
 
881
#ifdef __cplusplus
882
}
883
#endif
884
 
885
#endif /* STM32F1xx_LL_EXTI_H */
886