Subversion Repositories AFRtranscoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_exti.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of EXTI HAL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * Copyright (c) 2019 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_HAL_EXTI_H
21
#define STM32F1xx_HAL_EXTI_H
22
 
23
#ifdef __cplusplus
24
extern "C" {
25
#endif
26
 
27
/* Includes ------------------------------------------------------------------*/
28
#include "stm32f1xx_hal_def.h"
29
 
30
/** @addtogroup STM32F1xx_HAL_Driver
31
  * @{
32
  */
33
 
34
/** @defgroup EXTI EXTI
35
  * @brief EXTI HAL module driver
36
  * @{
37
  */
38
 
39
/* Exported types ------------------------------------------------------------*/
40
 
41
/** @defgroup EXTI_Exported_Types EXTI Exported Types
42
  * @{
43
  */
44
 
45
/**
46
  * @brief  HAL EXTI common Callback ID enumeration definition
47
  */
48
typedef enum
49
{
50
  HAL_EXTI_COMMON_CB_ID          = 0x00U
51
} EXTI_CallbackIDTypeDef;
52
 
53
/**
54
  * @brief  EXTI Handle structure definition
55
  */
56
typedef struct
57
{
58
  uint32_t Line;                    /*!<  Exti line number */
59
  void (* PendingCallback)(void);   /*!<  Exti pending callback */
60
} EXTI_HandleTypeDef;
61
 
62
/**
63
  * @brief  EXTI Configuration structure definition
64
  */
65
typedef struct
66
{
67
  uint32_t Line;      /*!< The Exti line to be configured. This parameter
68
                           can be a value of @ref EXTI_Line */
69
  uint32_t Mode;      /*!< The Exit Mode to be configured for a core.
70
                           This parameter can be a combination of @ref EXTI_Mode */
71
  uint32_t Trigger;   /*!< The Exti Trigger to be configured. This parameter
72
                           can be a value of @ref EXTI_Trigger */
73
  uint32_t GPIOSel;   /*!< The Exti GPIO multiplexer selection to be configured.
74
                           This parameter is only possible for line 0 to 15. It
75
                           can be a value of @ref EXTI_GPIOSel */
76
} EXTI_ConfigTypeDef;
77
 
78
/**
79
  * @}
80
  */
81
 
82
/* Exported constants --------------------------------------------------------*/
83
/** @defgroup EXTI_Exported_Constants EXTI Exported Constants
84
  * @{
85
  */
86
 
87
/** @defgroup EXTI_Line  EXTI Line
88
  * @{
89
  */
90
#define EXTI_LINE_0                        (EXTI_GPIO     | 0x00u)    /*!< External interrupt line 0 */
91
#define EXTI_LINE_1                        (EXTI_GPIO     | 0x01u)    /*!< External interrupt line 1 */
92
#define EXTI_LINE_2                        (EXTI_GPIO     | 0x02u)    /*!< External interrupt line 2 */
93
#define EXTI_LINE_3                        (EXTI_GPIO     | 0x03u)    /*!< External interrupt line 3 */
94
#define EXTI_LINE_4                        (EXTI_GPIO     | 0x04u)    /*!< External interrupt line 4 */
95
#define EXTI_LINE_5                        (EXTI_GPIO     | 0x05u)    /*!< External interrupt line 5 */
96
#define EXTI_LINE_6                        (EXTI_GPIO     | 0x06u)    /*!< External interrupt line 6 */
97
#define EXTI_LINE_7                        (EXTI_GPIO     | 0x07u)    /*!< External interrupt line 7 */
98
#define EXTI_LINE_8                        (EXTI_GPIO     | 0x08u)    /*!< External interrupt line 8 */
99
#define EXTI_LINE_9                        (EXTI_GPIO     | 0x09u)    /*!< External interrupt line 9 */
100
#define EXTI_LINE_10                       (EXTI_GPIO     | 0x0Au)    /*!< External interrupt line 10 */
101
#define EXTI_LINE_11                       (EXTI_GPIO     | 0x0Bu)    /*!< External interrupt line 11 */
102
#define EXTI_LINE_12                       (EXTI_GPIO     | 0x0Cu)    /*!< External interrupt line 12 */
103
#define EXTI_LINE_13                       (EXTI_GPIO     | 0x0Du)    /*!< External interrupt line 13 */
104
#define EXTI_LINE_14                       (EXTI_GPIO     | 0x0Eu)    /*!< External interrupt line 14 */
105
#define EXTI_LINE_15                       (EXTI_GPIO     | 0x0Fu)    /*!< External interrupt line 15 */
106
#define EXTI_LINE_16                       (EXTI_CONFIG   | 0x10u)    /*!< External interrupt line 16 Connected to the PVD Output */
107
#define EXTI_LINE_17                       (EXTI_CONFIG   | 0x11u)    /*!< External interrupt line 17 Connected to the RTC Alarm event */
108
#if defined(EXTI_IMR_IM18)
109
#define EXTI_LINE_18                       (EXTI_CONFIG   | 0x12u)    /*!< External interrupt line 18 Connected to the USB Wakeup from suspend event */
110
#endif /* EXTI_IMR_IM18 */
111
#if defined(EXTI_IMR_IM19)
112
#define EXTI_LINE_19                       (EXTI_CONFIG   | 0x13u)    /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
113
#endif /* EXTI_IMR_IM19 */
114
 
115
/**
116
  * @}
117
  */
118
 
119
/** @defgroup EXTI_Mode  EXTI Mode
120
  * @{
121
  */
122
#define EXTI_MODE_NONE                      0x00000000u
123
#define EXTI_MODE_INTERRUPT                 0x00000001u
124
#define EXTI_MODE_EVENT                     0x00000002u
125
/**
126
  * @}
127
  */
128
 
129
/** @defgroup EXTI_Trigger  EXTI Trigger
130
  * @{
131
  */
132
#define EXTI_TRIGGER_NONE                   0x00000000u
133
#define EXTI_TRIGGER_RISING                 0x00000001u
134
#define EXTI_TRIGGER_FALLING                0x00000002u
135
#define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
136
/**
137
  * @}
138
  */
139
 
140
/** @defgroup EXTI_GPIOSel  EXTI GPIOSel
141
  * @brief
142
  * @{
143
  */
144
#define EXTI_GPIOA                          0x00000000u
145
#define EXTI_GPIOB                          0x00000001u
146
#define EXTI_GPIOC                          0x00000002u
147
#define EXTI_GPIOD                          0x00000003u
148
#if defined (GPIOE)
149
#define EXTI_GPIOE                          0x00000004u
150
#endif /* GPIOE */
151
#if defined (GPIOF)
152
#define EXTI_GPIOF                          0x00000005u
153
#endif /* GPIOF */
154
#if defined (GPIOG)
155
#define EXTI_GPIOG                          0x00000006u
156
#endif /* GPIOG */
157
/**
158
  * @}
159
  */
160
 
161
/**
162
  * @}
163
  */
164
 
165
/* Exported macro ------------------------------------------------------------*/
166
/** @defgroup EXTI_Exported_Macros EXTI Exported Macros
167
  * @{
168
  */
169
 
170
/**
171
  * @}
172
  */
173
 
174
/* Private constants --------------------------------------------------------*/
175
/** @defgroup EXTI_Private_Constants EXTI Private Constants
176
  * @{
177
  */
178
/**
179
  * @brief  EXTI Line property definition
180
  */
181
#define EXTI_PROPERTY_SHIFT                 24u
182
#define EXTI_CONFIG                         (0x02uL << EXTI_PROPERTY_SHIFT)
183
#define EXTI_GPIO                           ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
184
#define EXTI_PROPERTY_MASK                  (EXTI_CONFIG | EXTI_GPIO)
185
 
186
/**
187
  * @brief  EXTI bit usage
188
  */
189
#define EXTI_PIN_MASK                       0x0000001Fu
190
 
191
/**
192
  * @brief  EXTI Mask for interrupt & event mode
193
  */
194
#define EXTI_MODE_MASK                      (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)
195
 
196
/**
197
  * @brief  EXTI Mask for trigger possibilities
198
  */
199
#define EXTI_TRIGGER_MASK                   (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
200
 
201
/**
202
  * @brief  EXTI Line number
203
  */
204
#if defined(EXTI_IMR_IM19)
205
#define EXTI_LINE_NB                        20UL
206
#elif defined(EXTI_IMR_IM18)
207
#define EXTI_LINE_NB                        19UL
208
#else /* EXTI_IMR_IM17 */
209
#define EXTI_LINE_NB                        18UL
210
#endif /* EXTI_IMR_IM19 */
211
/**
212
  * @}
213
  */
214
 
215
/* Private macros ------------------------------------------------------------*/
216
/** @defgroup EXTI_Private_Macros EXTI Private Macros
217
  * @{
218
  */
219
#define IS_EXTI_LINE(__EXTI_LINE__)          ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \
220
                                             ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG)   || \
221
                                              (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO))    && \
222
                                              (((__EXTI_LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB))
223
 
224
#define IS_EXTI_MODE(__EXTI_LINE__)          ((((__EXTI_LINE__) & EXTI_MODE_MASK) != 0x00u) && \
225
                                              (((__EXTI_LINE__) & ~EXTI_MODE_MASK) == 0x00u))
226
 
227
#define IS_EXTI_TRIGGER(__EXTI_LINE__)       (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)
228
 
229
#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__)  ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING)
230
 
231
#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__)   (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00u)
232
 
233
#if defined (GPIOG)
234
#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
235
                                         ((__PORT__) == EXTI_GPIOB) || \
236
                                         ((__PORT__) == EXTI_GPIOC) || \
237
                                         ((__PORT__) == EXTI_GPIOD) || \
238
                                         ((__PORT__) == EXTI_GPIOE) || \
239
                                         ((__PORT__) == EXTI_GPIOF) || \
240
                                         ((__PORT__) == EXTI_GPIOG))
241
#elif defined (GPIOF)
242
#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
243
                                         ((__PORT__) == EXTI_GPIOB) || \
244
                                         ((__PORT__) == EXTI_GPIOC) || \
245
                                         ((__PORT__) == EXTI_GPIOD) || \
246
                                         ((__PORT__) == EXTI_GPIOE) || \
247
                                         ((__PORT__) == EXTI_GPIOF))
248
#elif defined (GPIOE)
249
#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
250
                                         ((__PORT__) == EXTI_GPIOB) || \
251
                                         ((__PORT__) == EXTI_GPIOC) || \
252
                                         ((__PORT__) == EXTI_GPIOD) || \
253
                                         ((__PORT__) == EXTI_GPIOE))
254
#else
255
#define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
256
                                         ((__PORT__) == EXTI_GPIOB) || \
257
                                         ((__PORT__) == EXTI_GPIOC) || \
258
                                         ((__PORT__) == EXTI_GPIOD))
259
#endif /* GPIOG */
260
 
261
#define IS_EXTI_GPIO_PIN(__PIN__)       ((__PIN__) < 16u)
262
 
263
/**
264
  * @}
265
  */
266
 
267
/* Exported functions --------------------------------------------------------*/
268
/** @defgroup EXTI_Exported_Functions EXTI Exported Functions
269
  * @brief    EXTI Exported Functions
270
  * @{
271
  */
272
 
273
/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions
274
  * @brief    Configuration functions
275
  * @{
276
  */
277
/* Configuration functions ****************************************************/
278
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
279
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
280
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);
281
HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));
282
HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);
283
/**
284
  * @}
285
  */
286
 
287
/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions
288
  * @brief    IO operation functions
289
  * @{
290
  */
291
/* IO operation functions *****************************************************/
292
void              HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);
293
uint32_t          HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
294
void              HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
295
void              HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
296
 
297
/**
298
  * @}
299
  */
300
 
301
/**
302
  * @}
303
  */
304
 
305
/**
306
  * @}
307
  */
308
 
309
/**
310
  * @}
311
  */
312
 
313
#ifdef __cplusplus
314
}
315
#endif
316
 
317
#endif /* STM32F1xx_HAL_EXTI_H */
318