My Project
Loading...
Searching...
No Matches
stm32f3xx_hal_exti.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32F3xx_HAL_EXTI_H
21#define STM32F3xx_HAL_EXTI_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f3xx_hal_def.h"
29
39/* Exported types ------------------------------------------------------------*/
40
48typedef enum
49{
52
56typedef struct
57{
58 uint32_t Line;
59 void (* PendingCallback)(void);
61
65typedef struct
66{
67 uint32_t Line;
69 uint32_t Mode;
71 uint32_t Trigger;
73 uint32_t GPIOSel;
77
82/* Exported constants --------------------------------------------------------*/
90#define EXTI_LINE_0 (EXTI_GPIO | EXTI_REG1 | 0x00u)
91#define EXTI_LINE_1 (EXTI_GPIO | EXTI_REG1 | 0x01u)
92#define EXTI_LINE_2 (EXTI_GPIO | EXTI_REG1 | 0x02u)
93#define EXTI_LINE_3 (EXTI_GPIO | EXTI_REG1 | 0x03u)
94#define EXTI_LINE_4 (EXTI_GPIO | EXTI_REG1 | 0x04u)
95#define EXTI_LINE_5 (EXTI_GPIO | EXTI_REG1 | 0x05u)
96#define EXTI_LINE_6 (EXTI_GPIO | EXTI_REG1 | 0x06u)
97#define EXTI_LINE_7 (EXTI_GPIO | EXTI_REG1 | 0x07u)
98#define EXTI_LINE_8 (EXTI_GPIO | EXTI_REG1 | 0x08u)
99#define EXTI_LINE_9 (EXTI_GPIO | EXTI_REG1 | 0x09u)
100#define EXTI_LINE_10 (EXTI_GPIO | EXTI_REG1 | 0x0Au)
101#define EXTI_LINE_11 (EXTI_GPIO | EXTI_REG1 | 0x0Bu)
102#define EXTI_LINE_12 (EXTI_GPIO | EXTI_REG1 | 0x0Cu)
103#define EXTI_LINE_13 (EXTI_GPIO | EXTI_REG1 | 0x0Du)
104#define EXTI_LINE_14 (EXTI_GPIO | EXTI_REG1 | 0x0Eu)
105#define EXTI_LINE_15 (EXTI_GPIO | EXTI_REG1 | 0x0Fu)
106#define EXTI_LINE_16 (EXTI_CONFIG | EXTI_REG1 | 0x10u)
107#define EXTI_LINE_17 (EXTI_CONFIG | EXTI_REG1 | 0x11u)
109#if defined(EXTI_IMR_MR18)
110#define EXTI_LINE_18 (EXTI_CONFIG | EXTI_REG1 | 0x12u)
111#else
112#define EXTI_LINE_18 (EXTI_RESERVED | EXTI_REG1 | 0x12u)
113#endif /* EXTI_IMR_MR18 */
114
115#define EXTI_LINE_19 (EXTI_CONFIG | EXTI_REG1 | 0x13u)
116#define EXTI_LINE_20 (EXTI_CONFIG | EXTI_REG1 | 0x14u)
118#if defined(EXTI_IMR_MR21)
119#define EXTI_LINE_21 (EXTI_CONFIG | EXTI_REG1 | 0x15u)
120#else
121#define EXTI_LINE_21 (EXTI_RESERVED | EXTI_REG1 | 0x15u)
122#endif /* EXTI_IMR_MR21 */
123
124#define EXTI_LINE_22 (EXTI_CONFIG | EXTI_REG1 | 0x16u)
125#define EXTI_LINE_23 (EXTI_DIRECT | EXTI_REG1 | 0x17u)
127#if defined(EXTI_IMR_MR24)
128#define EXTI_LINE_24 (EXTI_DIRECT | EXTI_REG1 | 0x18u)
129#else
130#define EXTI_LINE_24 (EXTI_RESERVED | EXTI_REG1 | 0x18u)
131#endif /* EXTI_IMR_MR24 */
132
133#define EXTI_LINE_25 (EXTI_DIRECT | EXTI_REG1 | 0x19u)
135#if defined(EXTI_IMR_MR26)
136#define EXTI_LINE_26 (EXTI_DIRECT | EXTI_REG1 | 0x1Au)
137#else
138#define EXTI_LINE_26 (EXTI_RESERVED | EXTI_REG1 | 0x1Au)
139#endif /* EXTI_IMR_MR26 */
140
141#if defined(EXTI_IMR_MR27)
142#define EXTI_LINE_27 (EXTI_DIRECT | EXTI_REG1 | 0x1Bu)
143#else
144#define EXTI_LINE_27 (EXTI_RESERVED | EXTI_REG1 | 0x1Bu)
145#endif /* EXTI_IMR_MR27 */
146
147#if defined(EXTI_IMR_MR28)
148#define EXTI_LINE_28 (EXTI_DIRECT | EXTI_REG1 | 0x1Cu)
149#else
150#define EXTI_LINE_28 (EXTI_RESERVED | EXTI_REG1 | 0x1Cu)
151#endif /* EXTI_IMR_MR28 */
152
153#if defined(EXTI_32_63_SUPPORT)
154
155#if defined(EXTI_IMR_MR29)
156#define EXTI_LINE_29 (EXTI_CONFIG | EXTI_REG1 | 0x1Du)
157#else
158#define EXTI_LINE_29 (EXTI_RESERVED | EXTI_REG1 | 0x1Cu)
159#endif /* EXTI_IMR_MR29 */
160
161#if defined(EXTI_IMR_MR30)
162#define EXTI_LINE_30 (EXTI_CONFIG | EXTI_REG1 | 0x1Eu)
163#else
164#define EXTI_LINE_30 (EXTI_RESERVED | EXTI_REG1 | 0x1Eu)
165#endif /* EXTI_IMR_MR30 */
166
167#if defined(EXTI_IMR_MR31)
168#define EXTI_LINE_31 (EXTI_CONFIG | EXTI_REG1 | 0x1Fu)
169#else
170#define EXTI_LINE_31 (EXTI_RESERVED | EXTI_REG1 | 0x1Fu)
171#endif /* EXTI_IMR_MR31 */
172
173#define EXTI_LINE_32 (EXTI_CONFIG | EXTI_REG2 | 0x00u)
175#if defined(EXTI_IMR2_MR33)
176#define EXTI_LINE_33 (EXTI_CONFIG | EXTI_REG2 | 0x01u)
177#else
178#define EXTI_LINE_33 (EXTI_RESERVED | EXTI_REG2 | 0x01u)
179#endif /* EXTI_IMR2_MR33 */
180
181#if defined(EXTI_IMR2_MR34)
182#define EXTI_LINE_34 (EXTI_DIRECT | EXTI_REG2 | 0x02u)
183#else
184#define EXTI_LINE_34 (EXTI_RESERVED | EXTI_REG2 | 0x02u)
185#endif /* EXTI_IMR2_MR34 */
186
187#if defined(EXTI_IMR2_MR35)
188#define EXTI_LINE_35 (EXTI_DIRECT | EXTI_REG2 | 0x03u)
189#else
190#define EXTI_LINE_35 (EXTI_RESERVED | EXTI_REG2 | 0x03u)
191#endif /* EXTI_IMR2_MR35 */
192
193#endif /* EXTI_32_63_SUPPORT */
201#define EXTI_MODE_NONE 0x00000000u
202#define EXTI_MODE_INTERRUPT 0x00000001u
203#define EXTI_MODE_EVENT 0x00000002u
211#define EXTI_TRIGGER_NONE 0x00000000u
212#define EXTI_TRIGGER_RISING 0x00000001u
213#define EXTI_TRIGGER_FALLING 0x00000002u
214#define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
223#define EXTI_GPIOA 0x00000000u
224#define EXTI_GPIOB 0x00000001u
225#define EXTI_GPIOC 0x00000002u
226#define EXTI_GPIOD 0x00000003u
227#if defined(GPIOE)
228#define EXTI_GPIOE 0x00000004u
229#endif /* GPIOE */
230#define EXTI_GPIOF 0x00000005u
231#if defined(GPIOG)
232#define EXTI_GPIOG 0x00000006u
233#endif /* GPIOG */
234#if defined(GPIOH)
235#define EXTI_GPIOH 0x00000007u
236#endif /* GPIOH */
245/* Exported macro ------------------------------------------------------------*/
254/* Private constants --------------------------------------------------------*/
261#define EXTI_PROPERTY_SHIFT 24u
262#define EXTI_DIRECT (0x01uL << EXTI_PROPERTY_SHIFT)
263#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT)
264#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
265#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT)
266#define EXTI_PROPERTY_MASK (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO)
267
271#define EXTI_REG_SHIFT 16u
272#define EXTI_REG1 (0x00uL << EXTI_REG_SHIFT)
273#define EXTI_REG2 (0x01uL << EXTI_REG_SHIFT)
274#define EXTI_REG_MASK (EXTI_REG1 | EXTI_REG2)
275#define EXTI_PIN_MASK 0x0000001Fu
276
280#define EXTI_MODE_MASK (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)
281
285#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
286
290#if defined(EXTI_32_63_SUPPORT)
291#define EXTI_LINE_NB 36uL
292#else
293#define EXTI_LINE_NB 29uL
294#endif /* EXTI_32_63_SUPPORT */
295
300/* Private macros ------------------------------------------------------------*/
304#define IS_EXTI_LINE(__EXTI_LINE__) ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_REG_MASK | EXTI_PIN_MASK)) == 0x00u) && \
305 ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT) || \
306 (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \
307 (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \
308 (((__EXTI_LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK)) < \
309 (((EXTI_LINE_NB / 32u) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32u))))
310
311#define IS_EXTI_MODE(__EXTI_LINE__) ((((__EXTI_LINE__) & EXTI_MODE_MASK) != 0x00u) && \
312 (((__EXTI_LINE__) & ~EXTI_MODE_MASK) == 0x00u))
313
314#define IS_EXTI_TRIGGER(__EXTI_LINE__) (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)
315
316#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__) ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING)
317
318#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__) (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00u)
319
320#if defined(GPIOH)
321#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
322 ((__PORT__) == EXTI_GPIOB) || \
323 ((__PORT__) == EXTI_GPIOC) || \
324 ((__PORT__) == EXTI_GPIOD) || \
325 ((__PORT__) == EXTI_GPIOE) || \
326 ((__PORT__) == EXTI_GPIOF) || \
327 ((__PORT__) == EXTI_GPIOG) || \
328 ((__PORT__) == EXTI_GPIOH))
329#elif defined(GPIOE)
330#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
331 ((__PORT__) == EXTI_GPIOB) || \
332 ((__PORT__) == EXTI_GPIOC) || \
333 ((__PORT__) == EXTI_GPIOD) || \
334 ((__PORT__) == EXTI_GPIOE) || \
335 ((__PORT__) == EXTI_GPIOF))
336#else
337#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
338 ((__PORT__) == EXTI_GPIOB) || \
339 ((__PORT__) == EXTI_GPIOC) || \
340 ((__PORT__) == EXTI_GPIOD) || \
341 ((__PORT__) == EXTI_GPIOF))
342#endif /* GPIOE */
343
344#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16u)
345
351/* Exported functions --------------------------------------------------------*/
361/* Configuration functions ****************************************************/
375/* IO operation functions *****************************************************/
377uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
378void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
380
397#ifdef __cplusplus
398}
399#endif
400
401#endif /* STM32F3xx_HAL_EXTI_H */
402
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine)
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void(*pPendingCbfn)(void))
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
EXTI_CallbackIDTypeDef
HAL EXTI common Callback ID enumeration definition.
Definition: stm32f3xx_hal_exti.h:49
@ HAL_EXTI_COMMON_CB_ID
Definition: stm32f3xx_hal_exti.h:50
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
Definition: stm32f3xx_hal_def.h:39
EXTI Configuration structure definition.
Definition: stm32f3xx_hal_exti.h:66
uint32_t Line
Definition: stm32f3xx_hal_exti.h:67
uint32_t Mode
Definition: stm32f3xx_hal_exti.h:69
uint32_t GPIOSel
Definition: stm32f3xx_hal_exti.h:73
uint32_t Trigger
Definition: stm32f3xx_hal_exti.h:71
EXTI Handle structure definition.
Definition: stm32f3xx_hal_exti.h:57
uint32_t Line
Definition: stm32f3xx_hal_exti.h:58