1 ////////////////////////////////////////////////////////////////////////////////
2 /// @file     hal_exti.h
3 /// @author   AE TEAM
4 /// @brief    THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE EXTI
5 ///           FIRMWARE LIBRARY.
6 ////////////////////////////////////////////////////////////////////////////////
7 /// @attention
8 ///
9 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
10 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
11 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
12 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
13 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
14 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
15 ///
16 /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
17 ////////////////////////////////////////////////////////////////////////////////
18 
19 // Define to prevent recursive inclusion
20 #ifndef __HAL_EXTI_H
21 #define __HAL_EXTI_H
22 
23 // Files includes
24 #include "types.h"
25 #include "reg_common.h"
26 #include "reg_exti.h"
27 
28 ////////////////////////////////////////////////////////////////////////////////
29 /// @addtogroup MM32_Hardware_Abstract_Layer
30 /// @{
31 
32 ////////////////////////////////////////////////////////////////////////////////
33 /// @defgroup EXTI_HAL
34 /// @brief EXTI HAL modules
35 /// @{
36 
37 
38 ////////////////////////////////////////////////////////////////////////////////
39 /// @defgroup EXTI_Exported_Types
40 /// @{
41 
42 ////////////////////////////////////////////////////////////////////////////////
43 /// @brief  EXTI mode enumeration
44 ////////////////////////////////////////////////////////////////////////////////
45 typedef enum {
46     EXTI_Mode_Interrupt = 0x00,                                                 ///< EXTI interrupt mode
47     EXTI_Mode_Event     = 0x04                                                  ///< EXTI event mode
48 } EXTIMode_TypeDef;
49 
50 ////////////////////////////////////////////////////////////////////////////////
51 /// @brief  EXTI Trigger enumeration
52 ////////////////////////////////////////////////////////////////////////////////
53 typedef enum {
54     EXTI_Trigger_Rising = 0x08,                                                 ///< EXTI rising edge triggering
55     EXTI_Trigger_Falling = 0x0C,                                                ///< EXTI falling edge triggering
56     EXTI_Trigger_Rising_Falling = 0x10                                          ///< EXTI rising and falling edge triggers
57 } EXTITrigger_TypeDef;
58 
59 ////////////////////////////////////////////////////////////////////////////////
60 /// @brief  EXTI Init Structure definition
61 ////////////////////////////////////////////////////////////////////////////////
62 typedef struct {
63     u32 EXTI_Line;                                                              ///< Specifies the EXTI lines to be enabled or disabled.
64     ///< This parameter can be any combination of @ref EXTI_Lines
65     EXTIMode_TypeDef EXTI_Mode;                                                 ///< Specifies the mode for the EXTI lines.
66     ///< This parameter can be a value of @ref EXTIMode_TypeDef
67     EXTITrigger_TypeDef EXTI_Trigger;                                           ///< Specifies the trigger signal active edge for the EXTI lines.
68     ///< This parameter can be a value of @ref EXTIMode_TypeDef
69     FunctionalState EXTI_LineCmd;                                               ///< Specifies the new state of the selected EXTI lines.
70     ///< This parameter can be set either to ENABLE or DISABLE
71 } EXTI_InitTypeDef;
72 
73 /// @}
74 
75 ////////////////////////////////////////////////////////////////////////////////
76 /// @defgroup EXTI_Exported_Constants
77 /// @{
78 
79 
80 
81 #define EXTI_LineNone   ((u32)0x0000000)                                        ///< No interrupt selected
82 #define EXTI_Line0      ((u32)0x0000001)                                        ///< External interrupt line 0
83 #define EXTI_Line1      ((u32)0x0000002)                                        ///< External interrupt line 1
84 #define EXTI_Line2      ((u32)0x0000004)                                        ///< External interrupt line 2
85 #define EXTI_Line3      ((u32)0x0000008)                                        ///< External interrupt line 3
86 #define EXTI_Line4      ((u32)0x0000010)                                        ///< External interrupt line 4
87 #define EXTI_Line5      ((u32)0x0000020)                                        ///< External interrupt line 5
88 #define EXTI_Line6      ((u32)0x0000040)                                        ///< External interrupt line 6
89 #define EXTI_Line7      ((u32)0x0000080)                                        ///< External interrupt line 7
90 #define EXTI_Line8      ((u32)0x0000100)                                        ///< External interrupt line 8
91 #define EXTI_Line9      ((u32)0x0000200)                                        ///< External interrupt line 9
92 #define EXTI_Line10     ((u32)0x0000400)                                        ///< External interrupt line 10
93 #define EXTI_Line11     ((u32)0x0000800)                                        ///< External interrupt line 11
94 #define EXTI_Line12     ((u32)0x0001000)                                        ///< External interrupt line 12
95 #define EXTI_Line13     ((u32)0x0002000)                                        ///< External interrupt line 13
96 #define EXTI_Line14     ((u32)0x0004000)                                        ///< External interrupt line 14
97 #define EXTI_Line15     ((u32)0x0008000)                                        ///< External interrupt line 15
98 #define EXTI_Line16     ((u32)0x0010000)                                        ///< External interrupt line 16 Connected to the PVD Output
99 #define EXTI_Line17     ((u32)0x0020000)                                        ///< External interrupt line 17 Connected to the RTC Alarm event
100 #define EXTI_Line18     ((u32)0x0040000)                                        ///< External interrupt line 18 Connected to the USB Wakeup from suspend event
101 #define EXTI_Line19     ((u32)0x0080000)                                        ///< External interrupt line 19
102 #define EXTI_Line20     ((u32)0x0100000)                                        ///< External interrupt line 20
103 #define EXTI_Line21     ((u32)0x0200000)                                        ///< External interrupt line 21
104 #define EXTI_Line22     ((u32)0x0400000)                                        ///< External interrupt line 22
105 #define EXTI_Line23     ((u32)0x0800000)                                        ///< External interrupt line 23
106 #define EXTI_Line24     ((u32)0x1000000)                                        ///< External interrupt line 24
107 
108 #define EXTI_PortSourceGPIOA (0x00U)
109 #define EXTI_PortSourceGPIOB (0x01U)
110 #define EXTI_PortSourceGPIOC (0x02U)
111 #define EXTI_PortSourceGPIOD (0x03U)
112 #define EXTI_PortSourceGPIOE (0x04U)
113 #define EXTI_PortSourceGPIOF (0x05U)
114 
115 #define EXTI_PinSource0     (0x00U)
116 #define EXTI_PinSource1     (0x01U)
117 #define EXTI_PinSource2     (0x02U)
118 #define EXTI_PinSource3     (0x03U)
119 #define EXTI_PinSource4     (0x04U)
120 #define EXTI_PinSource5     (0x05U)
121 #define EXTI_PinSource6     (0x06U)
122 #define EXTI_PinSource7     (0x07U)
123 #define EXTI_PinSource8     (0x08U)
124 #define EXTI_PinSource9     (0x09U)
125 #define EXTI_PinSource10    (0x0AU)
126 #define EXTI_PinSource11    (0x0BU)
127 #define EXTI_PinSource12    (0x0CU)
128 #define EXTI_PinSource13    (0x0DU)
129 #define EXTI_PinSource14    (0x0EU)
130 #define EXTI_PinSource15    (0x0FU)
131 
132 
133 
134 ////////////////////////////////////////////////////////////////////////////////
135 /// @defgroup EXTI_Exported_Variables
136 /// @{
137 
138 #ifdef _HAL_EXTI_C_
139 
140 #define GLOBAL
141 #else
142 #define GLOBAL extern
143 #endif
144 
145 #undef GLOBAL
146 
147 /// @}
148 
149 ////////////////////////////////////////////////////////////////////////////////
150 /// @defgroup EXTI_Exported_Functions
151 /// @{
152 
153 FlagStatus EXTI_GetFlagStatus(u32 line);
154 ITStatus   EXTI_GetITStatus(u32 line);
155 
156 void EXTI_DeInit(void);
157 void EXTI_Init(EXTI_InitTypeDef* init_struct);
158 void EXTI_StructInit(EXTI_InitTypeDef* init_struct);
159 void EXTI_GenerateSWInterrupt(u32 line);
160 void EXTI_ClearFlag(u32 line);
161 void EXTI_ClearITPendingBit(u32 line);
162 void exEXTI_LineDisable(u32 line);
163 u32  exEXTI_GetAllFlagStatus(void);
164 
165 
166 void EXTI_MemoryRemapConfig(u32 memory_remap);
167 void EXTI_LineConfig(u8 port_source_gpio, u8 pin_source);
168 
169 
170 /// @}
171 
172 /// @}
173 
174 /// @}
175 
176 ////////////////////////////////////////////////////////////////////////////////
177 #endif // __HAL_EXTI_H
178 ////////////////////////////////////////////////////////////////////////////////
179 
180 
181 
182