1 /** 2 ****************************************************************************** 3 * @file HAL_exti.h 4 * @author AE Team 5 * @version V1.0.0 6 * @date 28/7/2017 7 * @brief This file contains all the functions prototypes for the EXTI 8 * firmware library. 9 ****************************************************************************** 10 * @copy 11 * 12 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 14 * TIME. AS A RESULT, MindMotion SHALL NOT BE HELD LIABLE FOR ANY 15 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 16 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 17 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 * 19 * <h2><center>© COPYRIGHT 2017 MindMotion</center></h2> 20 */ 21 22 /* Define to prevent recursive inclusion -------------------------------------*/ 23 #ifndef __HAL_EXTI_H 24 #define __HAL_EXTI_H 25 26 /* Includes ------------------------------------------------------------------*/ 27 #include "HAL_device.h" 28 29 /** @addtogroup StdPeriph_Driver 30 * @{ 31 */ 32 33 /** @addtogroup EXTI 34 * @{ 35 */ 36 37 /** @defgroup EXTI_Exported_Types 38 * @{ 39 */ 40 41 /** 42 * @brief EXTI mode enumeration 43 */ 44 45 typedef enum 46 { 47 EXTI_Mode_Interrupt = 0x00, 48 EXTI_Mode_Event = 0x04 49 }EXTIMode_TypeDef; 50 51 #define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event)) 52 53 /** 54 * @brief EXTI Trigger enumeration 55 */ 56 57 typedef enum 58 { 59 EXTI_Trigger_Rising = 0x08, 60 EXTI_Trigger_Falling = 0x0C, 61 EXTI_Trigger_Rising_Falling = 0x10 62 }EXTITrigger_TypeDef; 63 64 #define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \ 65 ((TRIGGER) == EXTI_Trigger_Falling) || \ 66 ((TRIGGER) == EXTI_Trigger_Rising_Falling)) 67 /** 68 * @brief EXTI Init Structure definition 69 */ 70 71 typedef struct 72 { 73 uint32_t EXTI_Line; 74 EXTIMode_TypeDef EXTI_Mode; 75 EXTITrigger_TypeDef EXTI_Trigger; 76 FunctionalState EXTI_LineCmd; 77 }EXTI_InitTypeDef; 78 79 /** 80 * @} 81 */ 82 83 /** @defgroup EXTI_Exported_Constants 84 * @{ 85 */ 86 87 /** @defgroup EXTI_Lines 88 * @{ 89 */ 90 91 #define EXTI_Line0 ((uint32_t)0x00001) /* External interrupt line 0 */ 92 #define EXTI_Line1 ((uint32_t)0x00002) /* External interrupt line 1 */ 93 #define EXTI_Line2 ((uint32_t)0x00004) /* External interrupt line 2 */ 94 #define EXTI_Line3 ((uint32_t)0x00008) /* External interrupt line 3 */ 95 #define EXTI_Line4 ((uint32_t)0x00010) /* External interrupt line 4 */ 96 #define EXTI_Line5 ((uint32_t)0x00020) /* External interrupt line 5 */ 97 #define EXTI_Line6 ((uint32_t)0x00040) /* External interrupt line 6 */ 98 #define EXTI_Line7 ((uint32_t)0x00080) /* External interrupt line 7 */ 99 #define EXTI_Line8 ((uint32_t)0x00100) /* External interrupt line 8 */ 100 #define EXTI_Line9 ((uint32_t)0x00200) /* External interrupt line 9 */ 101 #define EXTI_Line10 ((uint32_t)0x00400) /* External interrupt line 10 */ 102 #define EXTI_Line11 ((uint32_t)0x00800) /* External interrupt line 11 */ 103 #define EXTI_Line12 ((uint32_t)0x01000) /* External interrupt line 12 */ 104 #define EXTI_Line13 ((uint32_t)0x02000) /* External interrupt line 13 */ 105 #define EXTI_Line14 ((uint32_t)0x04000) /* External interrupt line 14 */ 106 #define EXTI_Line15 ((uint32_t)0x08000) /* External interrupt line 15 */ 107 #define EXTI_Line16 ((uint32_t)0x10000) /* External interrupt line 16 108 Connected to the PVD Output */ 109 #define EXTI_Line17 ((uint32_t)0x20000) /* External interrupt line 17 110 Connected to the RTC Alarm event */ 111 #define EXTI_Line18 ((uint32_t)0x40000) /* External interrupt line 18 112 Connected to the USB Wakeup from 113 suspend event */ 114 115 #define IS_EXTI_LINE(LINE) ((((LINE) & (uint32_t)0xFFF80000) == 0x00) && ((LINE) != (uint16_t)0x00)) 116 117 #define IS_GET_EXTI_LINE(LINE) (((LINE) == EXTI_Line0) || ((LINE) == EXTI_Line1) || \ 118 ((LINE) == EXTI_Line2) || ((LINE) == EXTI_Line3) || \ 119 ((LINE) == EXTI_Line4) || ((LINE) == EXTI_Line5) || \ 120 ((LINE) == EXTI_Line6) || ((LINE) == EXTI_Line7) || \ 121 ((LINE) == EXTI_Line8) || ((LINE) == EXTI_Line9) || \ 122 ((LINE) == EXTI_Line10) || ((LINE) == EXTI_Line11) || \ 123 ((LINE) == EXTI_Line12) || ((LINE) == EXTI_Line13) || \ 124 ((LINE) == EXTI_Line14) || ((LINE) == EXTI_Line15) || \ 125 ((LINE) == EXTI_Line16) || ((LINE) == EXTI_Line17) || \ 126 ((LINE) == EXTI_Line18)) 127 128 /** 129 * @} 130 */ 131 132 /** 133 * @} 134 */ 135 136 /** @defgroup EXTI_Exported_Macros 137 * @{ 138 */ 139 140 /** 141 * @} 142 */ 143 144 /** @defgroup EXTI_Exported_Functions 145 * @{ 146 */ 147 148 void EXTI_DeInit(void); 149 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); 150 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); 151 void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); 152 FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); 153 void EXTI_ClearFlag(uint32_t EXTI_Line); 154 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); 155 void EXTI_ClearITPendingBit(uint32_t EXTI_Line); 156 157 #endif /* __HAL_EXTI_H */ 158 /** 159 * @} 160 */ 161 162 /** 163 * @} 164 */ 165 166 /** 167 * @} 168 */ 169 170 /*-------------------------(C) COPYRIGHT 2017 MindMotion ----------------------*/ 171