STM32F439xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f4xx_ll_exti.h 00004 * @author MCD Application Team 00005 * @brief Header file of EXTI LL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> 00010 * 00011 * Redistribution and use in source and binary forms, with or without modification, 00012 * are permitted provided that the following conditions are met: 00013 * 1. Redistributions of source code must retain the above copyright notice, 00014 * this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright notice, 00016 * this list of conditions and the following disclaimer in the documentation 00017 * and/or other materials provided with the distribution. 00018 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00019 * may be used to endorse or promote products derived from this software 00020 * without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00025 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00026 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00027 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00028 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00029 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00030 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00031 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00032 * 00033 ****************************************************************************** 00034 */ 00035 00036 /* Define to prevent recursive inclusion -------------------------------------*/ 00037 #ifndef __STM32F4xx_LL_EXTI_H 00038 #define __STM32F4xx_LL_EXTI_H 00039 00040 #ifdef __cplusplus 00041 extern "C" { 00042 #endif 00043 00044 /* Includes ------------------------------------------------------------------*/ 00045 #include "stm32f4xx.h" 00046 00047 /** @addtogroup STM32F4xx_LL_Driver 00048 * @{ 00049 */ 00050 00051 #if defined (EXTI) 00052 00053 /** @defgroup EXTI_LL EXTI 00054 * @{ 00055 */ 00056 00057 /* Private types -------------------------------------------------------------*/ 00058 /* Private variables ---------------------------------------------------------*/ 00059 /* Private constants ---------------------------------------------------------*/ 00060 /* Private Macros ------------------------------------------------------------*/ 00061 #if defined(USE_FULL_LL_DRIVER) 00062 /** @defgroup EXTI_LL_Private_Macros EXTI Private Macros 00063 * @{ 00064 */ 00065 /** 00066 * @} 00067 */ 00068 #endif /*USE_FULL_LL_DRIVER*/ 00069 /* Exported types ------------------------------------------------------------*/ 00070 #if defined(USE_FULL_LL_DRIVER) 00071 /** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure 00072 * @{ 00073 */ 00074 typedef struct 00075 { 00076 00077 uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 00078 This parameter can be any combination of @ref EXTI_LL_EC_LINE */ 00079 00080 FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. 00081 This parameter can be set either to ENABLE or DISABLE */ 00082 00083 uint8_t Mode; /*!< Specifies the mode for the EXTI lines. 00084 This parameter can be a value of @ref EXTI_LL_EC_MODE. */ 00085 00086 uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. 00087 This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ 00088 } LL_EXTI_InitTypeDef; 00089 00090 /** 00091 * @} 00092 */ 00093 #endif /*USE_FULL_LL_DRIVER*/ 00094 00095 /* Exported constants --------------------------------------------------------*/ 00096 /** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants 00097 * @{ 00098 */ 00099 00100 /** @defgroup EXTI_LL_EC_LINE LINE 00101 * @{ 00102 */ 00103 #define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ 00104 #define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ 00105 #define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ 00106 #define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ 00107 #define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ 00108 #define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ 00109 #define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ 00110 #define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ 00111 #define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ 00112 #define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ 00113 #define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ 00114 #define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ 00115 #define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ 00116 #define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ 00117 #define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ 00118 #define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ 00119 #if defined(EXTI_IMR_IM16) 00120 #define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ 00121 #endif 00122 #define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ 00123 #if defined(EXTI_IMR_IM18) 00124 #define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ 00125 #endif 00126 #define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ 00127 #if defined(EXTI_IMR_IM20) 00128 #define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ 00129 #endif 00130 #if defined(EXTI_IMR_IM21) 00131 #define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ 00132 #endif 00133 #if defined(EXTI_IMR_IM22) 00134 #define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ 00135 #endif 00136 #if defined(EXTI_IMR_IM23) 00137 #define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ 00138 #endif 00139 #if defined(EXTI_IMR_IM24) 00140 #define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ 00141 #endif 00142 #if defined(EXTI_IMR_IM25) 00143 #define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ 00144 #endif 00145 #if defined(EXTI_IMR_IM26) 00146 #define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ 00147 #endif 00148 #if defined(EXTI_IMR_IM27) 00149 #define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ 00150 #endif 00151 #if defined(EXTI_IMR_IM28) 00152 #define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ 00153 #endif 00154 #if defined(EXTI_IMR_IM29) 00155 #define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ 00156 #endif 00157 #if defined(EXTI_IMR_IM30) 00158 #define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ 00159 #endif 00160 #if defined(EXTI_IMR_IM31) 00161 #define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ 00162 #endif 00163 #define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ 00164 00165 00166 #define LL_EXTI_LINE_ALL ((uint32_t)0xFFFFFFFFU) /*!< All Extended line */ 00167 00168 #if defined(USE_FULL_LL_DRIVER) 00169 #define LL_EXTI_LINE_NONE ((uint32_t)0x00000000U) /*!< None Extended line */ 00170 #endif /*USE_FULL_LL_DRIVER*/ 00171 00172 /** 00173 * @} 00174 */ 00175 #if defined(USE_FULL_LL_DRIVER) 00176 00177 /** @defgroup EXTI_LL_EC_MODE Mode 00178 * @{ 00179 */ 00180 #define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ 00181 #define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ 00182 #define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ 00183 /** 00184 * @} 00185 */ 00186 00187 /** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger 00188 * @{ 00189 */ 00190 #define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ 00191 #define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ 00192 #define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ 00193 #define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ 00194 00195 /** 00196 * @} 00197 */ 00198 00199 00200 #endif /*USE_FULL_LL_DRIVER*/ 00201 00202 00203 /** 00204 * @} 00205 */ 00206 00207 /* Exported macro ------------------------------------------------------------*/ 00208 /** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros 00209 * @{ 00210 */ 00211 00212 /** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros 00213 * @{ 00214 */ 00215 00216 /** 00217 * @brief Write a value in EXTI register 00218 * @param __REG__ Register to be written 00219 * @param __VALUE__ Value to be written in the register 00220 * @retval None 00221 */ 00222 #define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) 00223 00224 /** 00225 * @brief Read a value in EXTI register 00226 * @param __REG__ Register to be read 00227 * @retval Register value 00228 */ 00229 #define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) 00230 /** 00231 * @} 00232 */ 00233 00234 00235 /** 00236 * @} 00237 */ 00238 00239 00240 00241 /* Exported functions --------------------------------------------------------*/ 00242 /** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions 00243 * @{ 00244 */ 00245 /** @defgroup EXTI_LL_EF_IT_Management IT_Management 00246 * @{ 00247 */ 00248 00249 /** 00250 * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 00251 * @note The reset value for the direct or internal lines (see RM) 00252 * is set to 1 in order to enable the interrupt by default. 00253 * Bits are set automatically at Power on. 00254 * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 00255 * @param ExtiLine This parameter can be one of the following values: 00256 * @arg @ref LL_EXTI_LINE_0 00257 * @arg @ref LL_EXTI_LINE_1 00258 * @arg @ref LL_EXTI_LINE_2 00259 * @arg @ref LL_EXTI_LINE_3 00260 * @arg @ref LL_EXTI_LINE_4 00261 * @arg @ref LL_EXTI_LINE_5 00262 * @arg @ref LL_EXTI_LINE_6 00263 * @arg @ref LL_EXTI_LINE_7 00264 * @arg @ref LL_EXTI_LINE_8 00265 * @arg @ref LL_EXTI_LINE_9 00266 * @arg @ref LL_EXTI_LINE_10 00267 * @arg @ref LL_EXTI_LINE_11 00268 * @arg @ref LL_EXTI_LINE_12 00269 * @arg @ref LL_EXTI_LINE_13 00270 * @arg @ref LL_EXTI_LINE_14 00271 * @arg @ref LL_EXTI_LINE_15 00272 * @arg @ref LL_EXTI_LINE_16 00273 * @arg @ref LL_EXTI_LINE_17 00274 * @arg @ref LL_EXTI_LINE_18 00275 * @arg @ref LL_EXTI_LINE_19(*) 00276 * @arg @ref LL_EXTI_LINE_20(*) 00277 * @arg @ref LL_EXTI_LINE_21 00278 * @arg @ref LL_EXTI_LINE_22 00279 * @arg @ref LL_EXTI_LINE_23(*) 00280 * @arg @ref LL_EXTI_LINE_ALL_0_31 00281 * @note (*): Available in some devices 00282 * @note Please check each device line mapping for EXTI Line availability 00283 * @retval None 00284 */ 00285 __STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) 00286 { 00287 SET_BIT(EXTI->IMR, ExtiLine); 00288 } 00289 00290 /** 00291 * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 00292 * @note The reset value for the direct or internal lines (see RM) 00293 * is set to 1 in order to enable the interrupt by default. 00294 * Bits are set automatically at Power on. 00295 * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 00296 * @param ExtiLine This parameter can be one of the following values: 00297 * @arg @ref LL_EXTI_LINE_0 00298 * @arg @ref LL_EXTI_LINE_1 00299 * @arg @ref LL_EXTI_LINE_2 00300 * @arg @ref LL_EXTI_LINE_3 00301 * @arg @ref LL_EXTI_LINE_4 00302 * @arg @ref LL_EXTI_LINE_5 00303 * @arg @ref LL_EXTI_LINE_6 00304 * @arg @ref LL_EXTI_LINE_7 00305 * @arg @ref LL_EXTI_LINE_8 00306 * @arg @ref LL_EXTI_LINE_9 00307 * @arg @ref LL_EXTI_LINE_10 00308 * @arg @ref LL_EXTI_LINE_11 00309 * @arg @ref LL_EXTI_LINE_12 00310 * @arg @ref LL_EXTI_LINE_13 00311 * @arg @ref LL_EXTI_LINE_14 00312 * @arg @ref LL_EXTI_LINE_15 00313 * @arg @ref LL_EXTI_LINE_16 00314 * @arg @ref LL_EXTI_LINE_17 00315 * @arg @ref LL_EXTI_LINE_18 00316 * @arg @ref LL_EXTI_LINE_19(*) 00317 * @arg @ref LL_EXTI_LINE_20(*) 00318 * @arg @ref LL_EXTI_LINE_21 00319 * @arg @ref LL_EXTI_LINE_22 00320 * @arg @ref LL_EXTI_LINE_23(*) 00321 * @arg @ref LL_EXTI_LINE_ALL_0_31 00322 * @note (*): Available in some devices 00323 * @note Please check each device line mapping for EXTI Line availability 00324 * @retval None 00325 */ 00326 __STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) 00327 { 00328 CLEAR_BIT(EXTI->IMR, ExtiLine); 00329 } 00330 00331 00332 /** 00333 * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 00334 * @note The reset value for the direct or internal lines (see RM) 00335 * is set to 1 in order to enable the interrupt by default. 00336 * Bits are set automatically at Power on. 00337 * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 00338 * @param ExtiLine This parameter can be one of the following values: 00339 * @arg @ref LL_EXTI_LINE_0 00340 * @arg @ref LL_EXTI_LINE_1 00341 * @arg @ref LL_EXTI_LINE_2 00342 * @arg @ref LL_EXTI_LINE_3 00343 * @arg @ref LL_EXTI_LINE_4 00344 * @arg @ref LL_EXTI_LINE_5 00345 * @arg @ref LL_EXTI_LINE_6 00346 * @arg @ref LL_EXTI_LINE_7 00347 * @arg @ref LL_EXTI_LINE_8 00348 * @arg @ref LL_EXTI_LINE_9 00349 * @arg @ref LL_EXTI_LINE_10 00350 * @arg @ref LL_EXTI_LINE_11 00351 * @arg @ref LL_EXTI_LINE_12 00352 * @arg @ref LL_EXTI_LINE_13 00353 * @arg @ref LL_EXTI_LINE_14 00354 * @arg @ref LL_EXTI_LINE_15 00355 * @arg @ref LL_EXTI_LINE_16 00356 * @arg @ref LL_EXTI_LINE_17 00357 * @arg @ref LL_EXTI_LINE_18 00358 * @arg @ref LL_EXTI_LINE_19(*) 00359 * @arg @ref LL_EXTI_LINE_20(*) 00360 * @arg @ref LL_EXTI_LINE_21 00361 * @arg @ref LL_EXTI_LINE_22 00362 * @arg @ref LL_EXTI_LINE_23(*) 00363 * @arg @ref LL_EXTI_LINE_ALL_0_31 00364 * @note (*): Available in some devices 00365 * @note Please check each device line mapping for EXTI Line availability 00366 * @retval State of bit (1 or 0). 00367 */ 00368 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) 00369 { 00370 return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); 00371 } 00372 00373 00374 /** 00375 * @} 00376 */ 00377 00378 /** @defgroup EXTI_LL_EF_Event_Management Event_Management 00379 * @{ 00380 */ 00381 00382 /** 00383 * @brief Enable ExtiLine Event request for Lines in range 0 to 31 00384 * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 00385 * @param ExtiLine This parameter can be one of the following values: 00386 * @arg @ref LL_EXTI_LINE_0 00387 * @arg @ref LL_EXTI_LINE_1 00388 * @arg @ref LL_EXTI_LINE_2 00389 * @arg @ref LL_EXTI_LINE_3 00390 * @arg @ref LL_EXTI_LINE_4 00391 * @arg @ref LL_EXTI_LINE_5 00392 * @arg @ref LL_EXTI_LINE_6 00393 * @arg @ref LL_EXTI_LINE_7 00394 * @arg @ref LL_EXTI_LINE_8 00395 * @arg @ref LL_EXTI_LINE_9 00396 * @arg @ref LL_EXTI_LINE_10 00397 * @arg @ref LL_EXTI_LINE_11 00398 * @arg @ref LL_EXTI_LINE_12 00399 * @arg @ref LL_EXTI_LINE_13 00400 * @arg @ref LL_EXTI_LINE_14 00401 * @arg @ref LL_EXTI_LINE_15 00402 * @arg @ref LL_EXTI_LINE_16 00403 * @arg @ref LL_EXTI_LINE_17 00404 * @arg @ref LL_EXTI_LINE_18 00405 * @arg @ref LL_EXTI_LINE_19(*) 00406 * @arg @ref LL_EXTI_LINE_20(*) 00407 * @arg @ref LL_EXTI_LINE_21 00408 * @arg @ref LL_EXTI_LINE_22 00409 * @arg @ref LL_EXTI_LINE_23(*) 00410 * @arg @ref LL_EXTI_LINE_ALL_0_31 00411 * @note (*): Available in some devices 00412 * @note Please check each device line mapping for EXTI Line availability 00413 * @retval None 00414 */ 00415 __STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) 00416 { 00417 SET_BIT(EXTI->EMR, ExtiLine); 00418 00419 } 00420 00421 00422 /** 00423 * @brief Disable ExtiLine Event request for Lines in range 0 to 31 00424 * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 00425 * @param ExtiLine This parameter can be one of the following values: 00426 * @arg @ref LL_EXTI_LINE_0 00427 * @arg @ref LL_EXTI_LINE_1 00428 * @arg @ref LL_EXTI_LINE_2 00429 * @arg @ref LL_EXTI_LINE_3 00430 * @arg @ref LL_EXTI_LINE_4 00431 * @arg @ref LL_EXTI_LINE_5 00432 * @arg @ref LL_EXTI_LINE_6 00433 * @arg @ref LL_EXTI_LINE_7 00434 * @arg @ref LL_EXTI_LINE_8 00435 * @arg @ref LL_EXTI_LINE_9 00436 * @arg @ref LL_EXTI_LINE_10 00437 * @arg @ref LL_EXTI_LINE_11 00438 * @arg @ref LL_EXTI_LINE_12 00439 * @arg @ref LL_EXTI_LINE_13 00440 * @arg @ref LL_EXTI_LINE_14 00441 * @arg @ref LL_EXTI_LINE_15 00442 * @arg @ref LL_EXTI_LINE_16 00443 * @arg @ref LL_EXTI_LINE_17 00444 * @arg @ref LL_EXTI_LINE_18 00445 * @arg @ref LL_EXTI_LINE_19(*) 00446 * @arg @ref LL_EXTI_LINE_20(*) 00447 * @arg @ref LL_EXTI_LINE_21 00448 * @arg @ref LL_EXTI_LINE_22 00449 * @arg @ref LL_EXTI_LINE_23(*) 00450 * @arg @ref LL_EXTI_LINE_ALL_0_31 00451 * @note (*): Available in some devices 00452 * @note Please check each device line mapping for EXTI Line availability 00453 * @retval None 00454 */ 00455 __STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) 00456 { 00457 CLEAR_BIT(EXTI->EMR, ExtiLine); 00458 } 00459 00460 00461 /** 00462 * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 00463 * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 00464 * @param ExtiLine This parameter can be one of the following values: 00465 * @arg @ref LL_EXTI_LINE_0 00466 * @arg @ref LL_EXTI_LINE_1 00467 * @arg @ref LL_EXTI_LINE_2 00468 * @arg @ref LL_EXTI_LINE_3 00469 * @arg @ref LL_EXTI_LINE_4 00470 * @arg @ref LL_EXTI_LINE_5 00471 * @arg @ref LL_EXTI_LINE_6 00472 * @arg @ref LL_EXTI_LINE_7 00473 * @arg @ref LL_EXTI_LINE_8 00474 * @arg @ref LL_EXTI_LINE_9 00475 * @arg @ref LL_EXTI_LINE_10 00476 * @arg @ref LL_EXTI_LINE_11 00477 * @arg @ref LL_EXTI_LINE_12 00478 * @arg @ref LL_EXTI_LINE_13 00479 * @arg @ref LL_EXTI_LINE_14 00480 * @arg @ref LL_EXTI_LINE_15 00481 * @arg @ref LL_EXTI_LINE_16 00482 * @arg @ref LL_EXTI_LINE_17 00483 * @arg @ref LL_EXTI_LINE_18 00484 * @arg @ref LL_EXTI_LINE_19(*) 00485 * @arg @ref LL_EXTI_LINE_20(*) 00486 * @arg @ref LL_EXTI_LINE_21 00487 * @arg @ref LL_EXTI_LINE_22 00488 * @arg @ref LL_EXTI_LINE_23(*) 00489 * @arg @ref LL_EXTI_LINE_ALL_0_31 00490 * @note (*): Available in some devices 00491 * @note Please check each device line mapping for EXTI Line availability 00492 * @retval State of bit (1 or 0). 00493 */ 00494 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) 00495 { 00496 return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); 00497 00498 } 00499 00500 00501 /** 00502 * @} 00503 */ 00504 00505 /** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management 00506 * @{ 00507 */ 00508 00509 /** 00510 * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 00511 * @note The configurable wakeup lines are edge-triggered. No glitch must be 00512 * generated on these lines. If a rising edge on a configurable interrupt 00513 * line occurs during a write operation in the EXTI_RTSR register, the 00514 * pending bit is not set. 00515 * Rising and falling edge triggers can be set for 00516 * the same interrupt line. In this case, both generate a trigger 00517 * condition. 00518 * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 00519 * @param ExtiLine This parameter can be a combination of the following values: 00520 * @arg @ref LL_EXTI_LINE_0 00521 * @arg @ref LL_EXTI_LINE_1 00522 * @arg @ref LL_EXTI_LINE_2 00523 * @arg @ref LL_EXTI_LINE_3 00524 * @arg @ref LL_EXTI_LINE_4 00525 * @arg @ref LL_EXTI_LINE_5 00526 * @arg @ref LL_EXTI_LINE_6 00527 * @arg @ref LL_EXTI_LINE_7 00528 * @arg @ref LL_EXTI_LINE_8 00529 * @arg @ref LL_EXTI_LINE_9 00530 * @arg @ref LL_EXTI_LINE_10 00531 * @arg @ref LL_EXTI_LINE_11 00532 * @arg @ref LL_EXTI_LINE_12 00533 * @arg @ref LL_EXTI_LINE_13 00534 * @arg @ref LL_EXTI_LINE_14 00535 * @arg @ref LL_EXTI_LINE_15 00536 * @arg @ref LL_EXTI_LINE_16 00537 * @arg @ref LL_EXTI_LINE_18 00538 * @arg @ref LL_EXTI_LINE_19(*) 00539 * @arg @ref LL_EXTI_LINE_20(*) 00540 * @arg @ref LL_EXTI_LINE_21 00541 * @arg @ref LL_EXTI_LINE_22 00542 * @note (*): Available in some devices 00543 * @note Please check each device line mapping for EXTI Line availability 00544 * @retval None 00545 */ 00546 __STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) 00547 { 00548 SET_BIT(EXTI->RTSR, ExtiLine); 00549 00550 } 00551 00552 00553 /** 00554 * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 00555 * @note The configurable wakeup lines are edge-triggered. No glitch must be 00556 * generated on these lines. If a rising edge on a configurable interrupt 00557 * line occurs during a write operation in the EXTI_RTSR register, the 00558 * pending bit is not set. 00559 * Rising and falling edge triggers can be set for 00560 * the same interrupt line. In this case, both generate a trigger 00561 * condition. 00562 * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 00563 * @param ExtiLine This parameter can be a combination of the following values: 00564 * @arg @ref LL_EXTI_LINE_0 00565 * @arg @ref LL_EXTI_LINE_1 00566 * @arg @ref LL_EXTI_LINE_2 00567 * @arg @ref LL_EXTI_LINE_3 00568 * @arg @ref LL_EXTI_LINE_4 00569 * @arg @ref LL_EXTI_LINE_5 00570 * @arg @ref LL_EXTI_LINE_6 00571 * @arg @ref LL_EXTI_LINE_7 00572 * @arg @ref LL_EXTI_LINE_8 00573 * @arg @ref LL_EXTI_LINE_9 00574 * @arg @ref LL_EXTI_LINE_10 00575 * @arg @ref LL_EXTI_LINE_11 00576 * @arg @ref LL_EXTI_LINE_12 00577 * @arg @ref LL_EXTI_LINE_13 00578 * @arg @ref LL_EXTI_LINE_14 00579 * @arg @ref LL_EXTI_LINE_15 00580 * @arg @ref LL_EXTI_LINE_16 00581 * @arg @ref LL_EXTI_LINE_18 00582 * @arg @ref LL_EXTI_LINE_19(*) 00583 * @arg @ref LL_EXTI_LINE_20(*) 00584 * @arg @ref LL_EXTI_LINE_21 00585 * @arg @ref LL_EXTI_LINE_22 00586 * @note (*): Available in some devices 00587 * @note Please check each device line mapping for EXTI Line availability 00588 * @retval None 00589 */ 00590 __STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) 00591 { 00592 CLEAR_BIT(EXTI->RTSR, ExtiLine); 00593 00594 } 00595 00596 00597 /** 00598 * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 00599 * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 00600 * @param ExtiLine This parameter can be a combination of the following values: 00601 * @arg @ref LL_EXTI_LINE_0 00602 * @arg @ref LL_EXTI_LINE_1 00603 * @arg @ref LL_EXTI_LINE_2 00604 * @arg @ref LL_EXTI_LINE_3 00605 * @arg @ref LL_EXTI_LINE_4 00606 * @arg @ref LL_EXTI_LINE_5 00607 * @arg @ref LL_EXTI_LINE_6 00608 * @arg @ref LL_EXTI_LINE_7 00609 * @arg @ref LL_EXTI_LINE_8 00610 * @arg @ref LL_EXTI_LINE_9 00611 * @arg @ref LL_EXTI_LINE_10 00612 * @arg @ref LL_EXTI_LINE_11 00613 * @arg @ref LL_EXTI_LINE_12 00614 * @arg @ref LL_EXTI_LINE_13 00615 * @arg @ref LL_EXTI_LINE_14 00616 * @arg @ref LL_EXTI_LINE_15 00617 * @arg @ref LL_EXTI_LINE_16 00618 * @arg @ref LL_EXTI_LINE_18 00619 * @arg @ref LL_EXTI_LINE_19(*) 00620 * @arg @ref LL_EXTI_LINE_20(*) 00621 * @arg @ref LL_EXTI_LINE_21 00622 * @arg @ref LL_EXTI_LINE_22 00623 * @note (*): Available in some devices 00624 * @note Please check each device line mapping for EXTI Line availability 00625 * @retval State of bit (1 or 0). 00626 */ 00627 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) 00628 { 00629 return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); 00630 } 00631 00632 00633 /** 00634 * @} 00635 */ 00636 00637 /** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management 00638 * @{ 00639 */ 00640 00641 /** 00642 * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 00643 * @note The configurable wakeup lines are edge-triggered. No glitch must be 00644 * generated on these lines. If a falling edge on a configurable interrupt 00645 * line occurs during a write operation in the EXTI_FTSR register, the 00646 * pending bit is not set. 00647 * Rising and falling edge triggers can be set for 00648 * the same interrupt line. In this case, both generate a trigger 00649 * condition. 00650 * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 00651 * @param ExtiLine This parameter can be a combination of the following values: 00652 * @arg @ref LL_EXTI_LINE_0 00653 * @arg @ref LL_EXTI_LINE_1 00654 * @arg @ref LL_EXTI_LINE_2 00655 * @arg @ref LL_EXTI_LINE_3 00656 * @arg @ref LL_EXTI_LINE_4 00657 * @arg @ref LL_EXTI_LINE_5 00658 * @arg @ref LL_EXTI_LINE_6 00659 * @arg @ref LL_EXTI_LINE_7 00660 * @arg @ref LL_EXTI_LINE_8 00661 * @arg @ref LL_EXTI_LINE_9 00662 * @arg @ref LL_EXTI_LINE_10 00663 * @arg @ref LL_EXTI_LINE_11 00664 * @arg @ref LL_EXTI_LINE_12 00665 * @arg @ref LL_EXTI_LINE_13 00666 * @arg @ref LL_EXTI_LINE_14 00667 * @arg @ref LL_EXTI_LINE_15 00668 * @arg @ref LL_EXTI_LINE_16 00669 * @arg @ref LL_EXTI_LINE_18 00670 * @arg @ref LL_EXTI_LINE_19(*) 00671 * @arg @ref LL_EXTI_LINE_20(*) 00672 * @arg @ref LL_EXTI_LINE_21 00673 * @arg @ref LL_EXTI_LINE_22 00674 * @note (*): Available in some devices 00675 * @note Please check each device line mapping for EXTI Line availability 00676 * @retval None 00677 */ 00678 __STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) 00679 { 00680 SET_BIT(EXTI->FTSR, ExtiLine); 00681 } 00682 00683 00684 /** 00685 * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 00686 * @note The configurable wakeup lines are edge-triggered. No glitch must be 00687 * generated on these lines. If a Falling edge on a configurable interrupt 00688 * line occurs during a write operation in the EXTI_FTSR register, the 00689 * pending bit is not set. 00690 * Rising and falling edge triggers can be set for the same interrupt line. 00691 * In this case, both generate a trigger condition. 00692 * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 00693 * @param ExtiLine This parameter can be a combination of the following values: 00694 * @arg @ref LL_EXTI_LINE_0 00695 * @arg @ref LL_EXTI_LINE_1 00696 * @arg @ref LL_EXTI_LINE_2 00697 * @arg @ref LL_EXTI_LINE_3 00698 * @arg @ref LL_EXTI_LINE_4 00699 * @arg @ref LL_EXTI_LINE_5 00700 * @arg @ref LL_EXTI_LINE_6 00701 * @arg @ref LL_EXTI_LINE_7 00702 * @arg @ref LL_EXTI_LINE_8 00703 * @arg @ref LL_EXTI_LINE_9 00704 * @arg @ref LL_EXTI_LINE_10 00705 * @arg @ref LL_EXTI_LINE_11 00706 * @arg @ref LL_EXTI_LINE_12 00707 * @arg @ref LL_EXTI_LINE_13 00708 * @arg @ref LL_EXTI_LINE_14 00709 * @arg @ref LL_EXTI_LINE_15 00710 * @arg @ref LL_EXTI_LINE_16 00711 * @arg @ref LL_EXTI_LINE_18 00712 * @arg @ref LL_EXTI_LINE_19(*) 00713 * @arg @ref LL_EXTI_LINE_20(*) 00714 * @arg @ref LL_EXTI_LINE_21 00715 * @arg @ref LL_EXTI_LINE_22 00716 * @note (*): Available in some devices 00717 * @note Please check each device line mapping for EXTI Line availability 00718 * @retval None 00719 */ 00720 __STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) 00721 { 00722 CLEAR_BIT(EXTI->FTSR, ExtiLine); 00723 } 00724 00725 00726 /** 00727 * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 00728 * @rmtoll FTSR FTx LL_EXTI_IsEnabledFallingTrig_0_31 00729 * @param ExtiLine This parameter can be a combination of the following values: 00730 * @arg @ref LL_EXTI_LINE_0 00731 * @arg @ref LL_EXTI_LINE_1 00732 * @arg @ref LL_EXTI_LINE_2 00733 * @arg @ref LL_EXTI_LINE_3 00734 * @arg @ref LL_EXTI_LINE_4 00735 * @arg @ref LL_EXTI_LINE_5 00736 * @arg @ref LL_EXTI_LINE_6 00737 * @arg @ref LL_EXTI_LINE_7 00738 * @arg @ref LL_EXTI_LINE_8 00739 * @arg @ref LL_EXTI_LINE_9 00740 * @arg @ref LL_EXTI_LINE_10 00741 * @arg @ref LL_EXTI_LINE_11 00742 * @arg @ref LL_EXTI_LINE_12 00743 * @arg @ref LL_EXTI_LINE_13 00744 * @arg @ref LL_EXTI_LINE_14 00745 * @arg @ref LL_EXTI_LINE_15 00746 * @arg @ref LL_EXTI_LINE_16 00747 * @arg @ref LL_EXTI_LINE_18 00748 * @arg @ref LL_EXTI_LINE_19(*) 00749 * @arg @ref LL_EXTI_LINE_20(*) 00750 * @arg @ref LL_EXTI_LINE_21 00751 * @arg @ref LL_EXTI_LINE_22 00752 * @note (*): Available in some devices 00753 * @note Please check each device line mapping for EXTI Line availability 00754 * @retval State of bit (1 or 0). 00755 */ 00756 __STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) 00757 { 00758 return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine)); 00759 } 00760 00761 00762 /** 00763 * @} 00764 */ 00765 00766 /** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management 00767 * @{ 00768 */ 00769 00770 /** 00771 * @brief Generate a software Interrupt Event for Lines in range 0 to 31 00772 * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to 00773 * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR 00774 * resulting in an interrupt request generation. 00775 * This bit is cleared by clearing the corresponding bit in the EXTI_PR 00776 * register (by writing a 1 into the bit) 00777 * @rmtoll SWIER SWIx LL_EXTI_GenerateSWI_0_31 00778 * @param ExtiLine This parameter can be a combination of the following values: 00779 * @arg @ref LL_EXTI_LINE_0 00780 * @arg @ref LL_EXTI_LINE_1 00781 * @arg @ref LL_EXTI_LINE_2 00782 * @arg @ref LL_EXTI_LINE_3 00783 * @arg @ref LL_EXTI_LINE_4 00784 * @arg @ref LL_EXTI_LINE_5 00785 * @arg @ref LL_EXTI_LINE_6 00786 * @arg @ref LL_EXTI_LINE_7 00787 * @arg @ref LL_EXTI_LINE_8 00788 * @arg @ref LL_EXTI_LINE_9 00789 * @arg @ref LL_EXTI_LINE_10 00790 * @arg @ref LL_EXTI_LINE_11 00791 * @arg @ref LL_EXTI_LINE_12 00792 * @arg @ref LL_EXTI_LINE_13 00793 * @arg @ref LL_EXTI_LINE_14 00794 * @arg @ref LL_EXTI_LINE_15 00795 * @arg @ref LL_EXTI_LINE_16 00796 * @arg @ref LL_EXTI_LINE_18 00797 * @arg @ref LL_EXTI_LINE_19(*) 00798 * @arg @ref LL_EXTI_LINE_20(*) 00799 * @arg @ref LL_EXTI_LINE_21 00800 * @arg @ref LL_EXTI_LINE_22 00801 * @note (*): Available in some devices 00802 * @note Please check each device line mapping for EXTI Line availability 00803 * @retval None 00804 */ 00805 __STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) 00806 { 00807 SET_BIT(EXTI->SWIER, ExtiLine); 00808 } 00809 00810 00811 /** 00812 * @} 00813 */ 00814 00815 /** @defgroup EXTI_LL_EF_Flag_Management Flag_Management 00816 * @{ 00817 */ 00818 00819 /** 00820 * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 00821 * @note This bit is set when the selected edge event arrives on the interrupt 00822 * line. This bit is cleared by writing a 1 to the bit. 00823 * @rmtoll PR PIFx LL_EXTI_IsActiveFlag_0_31 00824 * @param ExtiLine This parameter can be a combination of the following values: 00825 * @arg @ref LL_EXTI_LINE_0 00826 * @arg @ref LL_EXTI_LINE_1 00827 * @arg @ref LL_EXTI_LINE_2 00828 * @arg @ref LL_EXTI_LINE_3 00829 * @arg @ref LL_EXTI_LINE_4 00830 * @arg @ref LL_EXTI_LINE_5 00831 * @arg @ref LL_EXTI_LINE_6 00832 * @arg @ref LL_EXTI_LINE_7 00833 * @arg @ref LL_EXTI_LINE_8 00834 * @arg @ref LL_EXTI_LINE_9 00835 * @arg @ref LL_EXTI_LINE_10 00836 * @arg @ref LL_EXTI_LINE_11 00837 * @arg @ref LL_EXTI_LINE_12 00838 * @arg @ref LL_EXTI_LINE_13 00839 * @arg @ref LL_EXTI_LINE_14 00840 * @arg @ref LL_EXTI_LINE_15 00841 * @arg @ref LL_EXTI_LINE_16 00842 * @arg @ref LL_EXTI_LINE_18 00843 * @arg @ref LL_EXTI_LINE_19(*) 00844 * @arg @ref LL_EXTI_LINE_20(*) 00845 * @arg @ref LL_EXTI_LINE_21 00846 * @arg @ref LL_EXTI_LINE_22 00847 * @note (*): Available in some devices 00848 * @note Please check each device line mapping for EXTI Line availability 00849 * @retval State of bit (1 or 0). 00850 */ 00851 __STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) 00852 { 00853 return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine)); 00854 } 00855 00856 00857 /** 00858 * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 00859 * @note This bit is set when the selected edge event arrives on the interrupt 00860 * line. This bit is cleared by writing a 1 to the bit. 00861 * @rmtoll PR PIFx LL_EXTI_ReadFlag_0_31 00862 * @param ExtiLine This parameter can be a combination of the following values: 00863 * @arg @ref LL_EXTI_LINE_0 00864 * @arg @ref LL_EXTI_LINE_1 00865 * @arg @ref LL_EXTI_LINE_2 00866 * @arg @ref LL_EXTI_LINE_3 00867 * @arg @ref LL_EXTI_LINE_4 00868 * @arg @ref LL_EXTI_LINE_5 00869 * @arg @ref LL_EXTI_LINE_6 00870 * @arg @ref LL_EXTI_LINE_7 00871 * @arg @ref LL_EXTI_LINE_8 00872 * @arg @ref LL_EXTI_LINE_9 00873 * @arg @ref LL_EXTI_LINE_10 00874 * @arg @ref LL_EXTI_LINE_11 00875 * @arg @ref LL_EXTI_LINE_12 00876 * @arg @ref LL_EXTI_LINE_13 00877 * @arg @ref LL_EXTI_LINE_14 00878 * @arg @ref LL_EXTI_LINE_15 00879 * @arg @ref LL_EXTI_LINE_16 00880 * @arg @ref LL_EXTI_LINE_18 00881 * @arg @ref LL_EXTI_LINE_19(*) 00882 * @arg @ref LL_EXTI_LINE_20(*) 00883 * @arg @ref LL_EXTI_LINE_21 00884 * @arg @ref LL_EXTI_LINE_22 00885 * @note (*): Available in some devices 00886 * @note Please check each device line mapping for EXTI Line availability 00887 * @retval @note This bit is set when the selected edge event arrives on the interrupt 00888 */ 00889 __STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) 00890 { 00891 return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine)); 00892 } 00893 00894 00895 /** 00896 * @brief Clear ExtLine Flags for Lines in range 0 to 31 00897 * @note This bit is set when the selected edge event arrives on the interrupt 00898 * line. This bit is cleared by writing a 1 to the bit. 00899 * @rmtoll PR PIFx LL_EXTI_ClearFlag_0_31 00900 * @param ExtiLine This parameter can be a combination of the following values: 00901 * @arg @ref LL_EXTI_LINE_0 00902 * @arg @ref LL_EXTI_LINE_1 00903 * @arg @ref LL_EXTI_LINE_2 00904 * @arg @ref LL_EXTI_LINE_3 00905 * @arg @ref LL_EXTI_LINE_4 00906 * @arg @ref LL_EXTI_LINE_5 00907 * @arg @ref LL_EXTI_LINE_6 00908 * @arg @ref LL_EXTI_LINE_7 00909 * @arg @ref LL_EXTI_LINE_8 00910 * @arg @ref LL_EXTI_LINE_9 00911 * @arg @ref LL_EXTI_LINE_10 00912 * @arg @ref LL_EXTI_LINE_11 00913 * @arg @ref LL_EXTI_LINE_12 00914 * @arg @ref LL_EXTI_LINE_13 00915 * @arg @ref LL_EXTI_LINE_14 00916 * @arg @ref LL_EXTI_LINE_15 00917 * @arg @ref LL_EXTI_LINE_16 00918 * @arg @ref LL_EXTI_LINE_18 00919 * @arg @ref LL_EXTI_LINE_19(*) 00920 * @arg @ref LL_EXTI_LINE_20(*) 00921 * @arg @ref LL_EXTI_LINE_21 00922 * @arg @ref LL_EXTI_LINE_22 00923 * @note (*): Available in some devices 00924 * @note Please check each device line mapping for EXTI Line availability 00925 * @retval None 00926 */ 00927 __STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) 00928 { 00929 WRITE_REG(EXTI->PR, ExtiLine); 00930 } 00931 00932 00933 /** 00934 * @} 00935 */ 00936 00937 #if defined(USE_FULL_LL_DRIVER) 00938 /** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions 00939 * @{ 00940 */ 00941 00942 uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); 00943 uint32_t LL_EXTI_DeInit(void); 00944 void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); 00945 00946 00947 /** 00948 * @} 00949 */ 00950 #endif /* USE_FULL_LL_DRIVER */ 00951 00952 /** 00953 * @} 00954 */ 00955 00956 /** 00957 * @} 00958 */ 00959 00960 #endif /* EXTI */ 00961 00962 /** 00963 * @} 00964 */ 00965 00966 #ifdef __cplusplus 00967 } 00968 #endif 00969 00970 #endif /* __STM32F4xx_LL_EXTI_H */ 00971 00972 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/