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