1 /*
2   ******************************************************************************
3   * @file    HAL_EXTI.h
4   * @version V1.0.0
5   * @date    2020
6   * @brief   Header file of EXTI HAL module.
7   ******************************************************************************
8 */
9 #ifndef __HAL_EXTI_H__
10 #define __HAL_EXTI_H__
11 
12 #include "ACM32Fxx_HAL.h"
13 
14 /** @defgroup EXTI_Line  EXTI Line
15   * @{
16   */
17 #define EXTI_LINE_0                (0x000001)
18 #define EXTI_LINE_1                (0x000002)
19 #define EXTI_LINE_2                (0x000004)
20 #define EXTI_LINE_3                (0x000008)
21 #define EXTI_LINE_4                (0x000010)
22 #define EXTI_LINE_5                (0x000020)
23 #define EXTI_LINE_6                (0x000040)
24 #define EXTI_LINE_7                (0x000080)
25 #define EXTI_LINE_8                (0x000100)
26 #define EXTI_LINE_9                (0x000200)
27 #define EXTI_LINE_10               (0x000300)
28 #define EXTI_LINE_11               (0x000400)
29 #define EXTI_LINE_12               (0x001000)
30 #define EXTI_LINE_13               (0x002000)
31 #define EXTI_LINE_14               (0x004000)
32 #define EXTI_LINE_15               (0x008000)
33 #define EXTI_LINE_16               (0x010000)
34 #define EXTI_LINE_17               (0x020000)
35 #define EXTI_LINE_18               (0x040000)
36 #define EXTI_LINE_19               (0x080000)
37 #define EXTI_LINE_20               (0x100000)
38 #define EXTI_LINE_21               (0x200000)
39 #define EXTI_LINE_22               (0x400000)
40 #define EXTI_LINE_23               (0x800000)
41 #define EXTI_LINE_MASK             (0xFFFFFFU)
42 /**
43   * @}
44   */
45 
46 
47 /** @defgroup EXTI_Mode  EXTI Mode
48   * @{
49   */
50 #define EXTI_MODE_INTERRUPT         (0x00000001)
51 #define EXTI_MODE_EVENT             (0x00000002)
52 /**
53   * @}
54   */
55 
56 
57 /** @defgroup EXTI_Trigger  EXTI Trigger
58   * @{
59   */
60 #define EXTI_TRIGGER_RISING                 (0x00000001)
61 #define EXTI_TRIGGER_FALLING                (0x00000002)
62 #define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
63 /**
64   * @}
65   */
66 
67 
68 /** @defgroup EXTI_GPIOSel  EXTI GPIOSel
69   * @brief
70   * @{
71   */
72 #define EXTI_GPIOA                          0x00000000u
73 #define EXTI_GPIOB                          0x00000001u
74 #define EXTI_GPIOC                          0x00000002u
75 #define EXTI_GPIOD                          0x00000003u
76 #define EXTI_GPIOE                          0x00000004u
77 #define EXTI_GPIOF                          0x00000005u
78 /**
79   * @}
80   */
81 
82 
83 /**
84   * @brief  EXTI Configuration structure definition
85   */
86 typedef struct
87 {
88     uint32_t u32_Line;        /*!< The Exti line to be configured. This parameter
89                                    can be a value of @ref EXTI_Line */
90     uint32_t u32_Mode;        /*!< The Exit Mode to be configured for a core.
91                                    This parameter can be a combination of @ref EXTI_Mode */
92     uint32_t u32_Trigger;     /*!< The Exti Trigger to be configured. This parameter
93                                    can be a value of @ref EXTI_Trigger */
94     uint32_t u32_GPIOSel;     /*!< The Exti GPIO multiplexer selection to be configured.
95                                    This parameter is only possible for line 0 to 15. It
96                                    can be a value of @ref EXTI_GPIOSel */
97 }EXTI_HandleTypeDef;
98 
99 
100 /** @defgroup  EXTI Private Macros
101   * @{
102   */
103 #define IS_EXTI_ALL_LINE(LINE)    ( (LINE) | (EXTI_LINE_MASK) )
104 
105 #define IS_EXTI_MODE(__MODE__)     (((__MODE__) == EXTI_MODE_INTERRUPT) || \
106                                     ((__MODE__) == EXTI_MODE_EVENT))
107 
108 #define IS_EXTI_TRIGGER(__TRIGGER__)     (((__TRIGGER__) == EXTI_TRIGGER_RISING)  || \
109                                           ((__TRIGGER__) == EXTI_TRIGGER_FALLING) || \
110                                           ((__TRIGGER__) == EXTI_TRIGGER_RISING_FALLING))
111 
112 #define IS_EXTI_GPIOSEL(__GPIOSEL__)     (((__GPIOSEL__) == EXTI_GPIOA) || \
113                                           ((__GPIOSEL__) == EXTI_GPIOB) || \
114                                           ((__GPIOSEL__) == EXTI_GPIOC) || \
115                                           ((__GPIOSEL__) == EXTI_GPIOD) || \
116                                           ((__GPIOSEL__) == EXTI_GPIOE) || \
117                                           ((__GPIOSEL__) == EXTI_GPIOF))
118 /**
119   * @}
120   */
121 
122 /** @brief  __HAL_EXTI_LINE_IT_ENABLE
123   * @param  __LINE__: EXTI line.
124   *         This parameter can be a value of @ref EXTI_Line
125   */
126 #define __HAL_EXTI_LINE_IT_ENABLE(__LINE__)    (EXTI->IENR |= (__LINE__))
127 
128 /** @brief  __HAL_EXTI_LINE_IT_DISABLE
129   * @param  __LINE__: EXTI line.
130   *         This parameter can be a value of @ref EXTI_Line
131   */
132 #define __HAL_EXTI_LINE_IT_DISABLE(__LINE__)    (EXTI->IENR &= ~(__LINE__))
133 
134 /** @brief  __HAL_EXTI_LINE_EVENT_ENABLE
135   * @param  __LINE__: EXTI line.
136   *         This parameter can be a value of @ref EXTI_Line
137   */
138 #define __HAL_EXTI_LINE_EVENT_ENABLE(__LINE__)    (EXTI->EENR |= (__LINE__))
139 
140 /** @brief  __HAL_EXTI_LINE_EVENT_DISABLE
141   * @param  __LINE__: EXTI line.
142   *         This parameter can be a value of @ref EXTI_Line
143   */
144 #define __HAL_EXTI_LINE_EVENT_DISABLE(__LINE__)    (EXTI->EENR &= ~(__LINE__))
145 
146 
147 /* HAL_EXTI_IRQHandler */
148 void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *huart);
149 
150 /* HAL_EXTI_SetConfigLine */
151 HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti);
152 
153 /* HAL_EXTI_SoftTrigger */
154 void HAL_EXTI_SoftTrigger(EXTI_HandleTypeDef *hexti);
155 
156 /* HAL_EXTI_GetPending */
157 bool HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti);
158 
159 /* HAL_EXTI_ClearPending */
160 void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti);
161 
162 /* HAL_EXTI_ClearAllPending */
163 void HAL_EXTI_ClearAllPending(void);
164 
165 #endif
166 
167