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>© 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