STM32H735xx HAL User Manual
stm32h7xx_hal_exti.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_exti.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of EXTI HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_HAL_EXTI_H
00021 #define STM32H7xx_HAL_EXTI_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx_hal_def.h"
00029 
00030 /** @addtogroup STM32H7xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @defgroup EXTI EXTI
00035   * @brief EXTI HAL module driver
00036   * @{
00037   */
00038 
00039 /* Exported types ------------------------------------------------------------*/
00040 
00041 /** @defgroup EXTI_Exported_Types EXTI Exported Types
00042   * @{
00043   */
00044 typedef enum
00045 {
00046   HAL_EXTI_COMMON_CB_ID          = 0x00U,
00047 } EXTI_CallbackIDTypeDef;
00048 
00049 
00050 /**
00051   * @brief  EXTI Handle structure definition
00052   */
00053 typedef struct
00054 {
00055   uint32_t Line;                    /*!<  Exti line number */
00056   void (* PendingCallback)(void);   /*!<  Exti pending callback */
00057 } EXTI_HandleTypeDef;
00058 
00059 /**
00060   * @brief  EXTI Configuration structure definition
00061   */
00062 typedef struct
00063 {
00064   uint32_t Line;           /*!< The Exti line to be configured. This parameter
00065                                 can be a value of @ref EXTI_Line */
00066   uint32_t Mode;           /*!< The Exit Mode to be configured for a core.
00067                                 This parameter can be a combination of @ref EXTI_Mode */
00068   uint32_t Trigger;        /*!< The Exti Trigger to be configured. This parameter
00069                                 can be a value of @ref EXTI_Trigger */
00070   uint32_t GPIOSel;        /*!< The Exti GPIO multiplexer selection to be configured.
00071                                 This parameter is only possible for line 0 to 15. It
00072                                 can be a value of @ref EXTI_GPIOSel */
00073 
00074   uint32_t PendClearSource; /*!< Specifies the event pending clear source for D3/SRD
00075                                  domain. This parameter can be a value of @ref
00076                                  EXTI_PendClear_Source */
00077 
00078 } EXTI_ConfigTypeDef;
00079 
00080 /**
00081   * @}
00082   */
00083 
00084 /* Exported constants --------------------------------------------------------*/
00085 /** @defgroup EXTI_Exported_Constants EXTI Exported Constants
00086   * @{
00087   */
00088 
00089 /** @defgroup EXTI_Line  EXTI Line
00090   * @{
00091   */
00092 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x00U)
00093 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x01U)
00094 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x02U)
00095 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x03U)
00096 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x04U)
00097 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x05U)
00098 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x06U)
00099 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x07U)
00100 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x08U)
00101 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x09U)
00102 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0AU)
00103 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0BU)
00104 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0CU)
00105 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0DU)
00106 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0EU)
00107 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0FU)
00108 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x10U)
00109 #define EXTI_LINE_17                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x11U)
00110 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x12U)
00111 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x13U)
00112 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x14U)
00113 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x15U)
00114 #define EXTI_LINE_22                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
00115 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
00116 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)
00117 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x19U)
00118 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
00119 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
00120 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)
00121 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)
00122 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)
00123 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)
00124 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)
00125 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)
00126 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x02U)
00127 #define EXTI_LINE_35                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x03U)
00128 #define EXTI_LINE_36                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)
00129 #define EXTI_LINE_37                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)
00130 #define EXTI_LINE_38                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)
00131 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)
00132 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)
00133 #define EXTI_LINE_41                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x09U)
00134 #define EXTI_LINE_42                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)
00135 #define EXTI_LINE_43                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)
00136 #if !defined(USB2_OTG_FS)
00137 #define EXTI_LINE_44                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0CU)
00138 #else
00139 #define EXTI_LINE_44                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)
00140 #endif /* USB2_OTG_FS */
00141 #define EXTI_LINE_45                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0DU)
00142 #if defined(DSI)
00143 #define EXTI_LINE_46                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0EU)
00144 #else
00145 #define EXTI_LINE_46                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0EU)
00146 #endif /* DSI */
00147 #define EXTI_LINE_47                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0FU)
00148 #define EXTI_LINE_48                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x10U)
00149 #define EXTI_LINE_49                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x11U)
00150 #define EXTI_LINE_50                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x12U)
00151 #define EXTI_LINE_51                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x13U)
00152 #if defined(LPTIM4)
00153 #define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x14U)
00154 #else
00155 #define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x14U)
00156 #endif /*LPTIM4*/
00157 #if defined(LPTIM5)
00158 #define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x15U)
00159 #else
00160 #define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)
00161 #endif /*LPTIM5*/
00162 #define EXTI_LINE_54                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
00163 #define EXTI_LINE_55                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
00164 #define EXTI_LINE_56                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)
00165 #if defined(EXTI_IMR2_IM57)
00166 #define EXTI_LINE_57                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)
00167 #else
00168 #define EXTI_LINE_57                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x19U)
00169 #endif /*EXTI_IMR2_IM57*/
00170 #define EXTI_LINE_58                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
00171 #if defined(EXTI_IMR2_IM59)
00172 #define EXTI_LINE_59                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
00173 #else
00174 #define EXTI_LINE_59                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x1BU)
00175 #endif /*EXTI_IMR2_IM59*/
00176 #define EXTI_LINE_60                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)
00177 #define EXTI_LINE_61                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)
00178 #define EXTI_LINE_62                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)
00179 #define EXTI_LINE_63                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)
00180 #define EXTI_LINE_64                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)
00181 #define EXTI_LINE_65                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)
00182 #define EXTI_LINE_66                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x02U)
00183 #define EXTI_LINE_67                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x03U)
00184 #define EXTI_LINE_68                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)
00185 #define EXTI_LINE_69                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)
00186 #define EXTI_LINE_70                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)
00187 #define EXTI_LINE_71                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)
00188 #define EXTI_LINE_72                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)
00189 #define EXTI_LINE_73                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x09U)
00190 #define EXTI_LINE_74                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)
00191 #if defined(ADC3)
00192 #define EXTI_LINE_75                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)
00193 #else
00194 #define EXTI_LINE_75                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0BU)
00195 #endif /* ADC3 */
00196 #if defined(SAI4)
00197 #define EXTI_LINE_76                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)
00198 #else
00199 #define EXTI_LINE_76                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0CU)
00200 #endif /* SAI4 */
00201 #if defined (DUAL_CORE)
00202 #define EXTI_LINE_77                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0DU)
00203 #define EXTI_LINE_78                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x0EU)
00204 #define EXTI_LINE_79                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0FU)
00205 #define EXTI_LINE_80                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x10U)
00206 #else
00207 #define EXTI_LINE_77                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0DU)
00208 #define EXTI_LINE_78                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0EU)
00209 #define EXTI_LINE_79                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0FU)
00210 #define EXTI_LINE_80                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x10U)
00211 #endif /* DUAL_CORE */
00212 #define EXTI_LINE_81                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x11U)
00213 #if defined (DUAL_CORE)
00214 #define EXTI_LINE_82                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x12U)
00215 #else
00216 #define EXTI_LINE_82                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x12U)
00217 #endif /* DUAL_CORE */
00218 #define EXTI_LINE_83                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x13U)
00219 #if defined (DUAL_CORE)
00220 #define EXTI_LINE_84                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x14U)
00221 #else
00222 #define EXTI_LINE_84                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x14U)
00223 #endif /* DUAL_CORE */
00224 #define EXTI_LINE_85                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)
00225 #if defined(ETH)
00226 #define EXTI_LINE_86                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
00227 #else
00228 #define EXTI_LINE_86                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x16U)
00229 #endif /* ETH */
00230 #define EXTI_LINE_87                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
00231 #if defined(DTS)
00232 #define EXTI_LINE_88                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL | 0x18U)
00233 #endif /* DTS */
00234 #if defined(EXTI_IMR3_IM89)
00235 #define EXTI_LINE_89                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)
00236 #endif /*EXTI_IMR3_IM89*/
00237 #if defined(EXTI_IMR3_IM90)
00238 #define EXTI_LINE_90                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
00239 #endif /*EXTI_IMR3_IM90*/
00240 #if defined(I2C5)
00241 #define EXTI_LINE_91                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
00242 #endif /*I2C5*/
00243 
00244 /**
00245   * @}
00246   */
00247 
00248 /** @defgroup EXTI_Mode  EXTI Mode
00249   * @{
00250   */
00251 #define EXTI_MODE_NONE                      0x00000000U
00252 #define EXTI_MODE_INTERRUPT                 0x00000001U
00253 #define EXTI_MODE_EVENT                     0x00000002U
00254 #if defined(DUAL_CORE)
00255 #define EXTI_MODE_CORE1_INTERRUPT           EXTI_MODE_INTERRUPT
00256 #define EXTI_MODE_CORE1_EVENT               EXTI_MODE_EVENT
00257 #define EXTI_MODE_CORE2_INTERRUPT           0x00000010U
00258 #define EXTI_MODE_CORE2_EVENT               0x00000020U
00259 #endif /* DUAL_CORE */
00260 /**
00261   * @}
00262   */
00263 
00264 /** @defgroup EXTI_Trigger  EXTI Trigger
00265   * @{
00266   */
00267 #define EXTI_TRIGGER_NONE                   0x00000000U
00268 #define EXTI_TRIGGER_RISING                 0x00000001U
00269 #define EXTI_TRIGGER_FALLING                0x00000002U
00270 #define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
00271 /**
00272   * @}
00273   */
00274 
00275 /** @defgroup EXTI_GPIOSel  EXTI GPIOSel
00276   * @brief
00277   * @{
00278   */
00279 #define EXTI_GPIOA                          0x00000000U
00280 #define EXTI_GPIOB                          0x00000001U
00281 #define EXTI_GPIOC                          0x00000002U
00282 #define EXTI_GPIOD                          0x00000003U
00283 #define EXTI_GPIOE                          0x00000004U
00284 #define EXTI_GPIOF                          0x00000005U
00285 #define EXTI_GPIOG                          0x00000006U
00286 #define EXTI_GPIOH                          0x00000007U
00287 #if defined(GPIOI)
00288 #define EXTI_GPIOI                          0x00000008U
00289 #endif /*GPIOI*/
00290 #define EXTI_GPIOJ                          0x00000009U
00291 #define EXTI_GPIOK                          0x0000000AU
00292 
00293 /**
00294   * @}
00295   */
00296 
00297 /** @defgroup EXTI_PendClear_Source  EXTI PendClear Source
00298   * @brief
00299   * @{
00300   */
00301 #define EXTI_D3_PENDCLR_SRC_NONE       0x00000000U /*!< No D3 domain pendclear source , PMRx register to be set to zero  */
00302 #define EXTI_D3_PENDCLR_SRC_DMACH6     0x00000001U /*!< DMA ch6 event selected as D3 domain pendclear source, PMRx register to be set to 1 */
00303 #define EXTI_D3_PENDCLR_SRC_DMACH7     0x00000002U /*!< DMA ch7 event selected as D3 domain pendclear source, PMRx register to be set to 1*/
00304 #if defined (LPTIM4)
00305 #define EXTI_D3_PENDCLR_SRC_LPTIM4     0x00000003U /*!< LPTIM4 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
00306 #else
00307 #define EXTI_D3_PENDCLR_SRC_LPTIM2     0x00000003U /*!< LPTIM2 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
00308 #endif
00309 #if defined (LPTIM5)
00310 #define EXTI_D3_PENDCLR_SRC_LPTIM5     0x00000004U /*!< LPTIM5 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
00311 #else
00312 #define EXTI_D3_PENDCLR_SRC_LPTIM3     0x00000004U /*!< LPTIM3 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
00313 #endif
00314 /**
00315   * @}
00316   */
00317 
00318 /**
00319   * @}
00320   */
00321 
00322 /* Exported macro ------------------------------------------------------------*/
00323 /** @defgroup EXTI_Exported_Macros EXTI Exported Macros
00324   * @{
00325   */
00326 
00327 /**
00328   * @}
00329   */
00330 
00331 /* Private constants --------------------------------------------------------*/
00332 /** @defgroup EXTI_Private_Constants EXTI Private Constants
00333   * @{
00334   */
00335 /**
00336   * @brief  EXTI Line property definition
00337   */
00338 #define EXTI_PROPERTY_SHIFT                 24U
00339 #define EXTI_DIRECT                         (0x01UL << EXTI_PROPERTY_SHIFT)
00340 #define EXTI_CONFIG                         (0x02UL << EXTI_PROPERTY_SHIFT)
00341 #define EXTI_GPIO                           ((0x04UL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
00342 #define EXTI_RESERVED                       (0x08UL << EXTI_PROPERTY_SHIFT)
00343 #define EXTI_PROPERTY_MASK                  (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO)
00344 
00345 /**
00346   * @brief  EXTI Event presence definition
00347   */
00348 #define EXTI_EVENT_PRESENCE_SHIFT           28U
00349 #define EXTI_EVENT                          (0x01UL << EXTI_EVENT_PRESENCE_SHIFT)
00350 #define EXTI_EVENT_PRESENCE_MASK            (EXTI_EVENT)
00351 
00352 /**
00353   * @brief  EXTI Register and bit usage
00354   */
00355 #define EXTI_REG_SHIFT                      16U
00356 #define EXTI_REG1                           (0x00UL << EXTI_REG_SHIFT)
00357 #define EXTI_REG2                           (0x01UL << EXTI_REG_SHIFT)
00358 #define EXTI_REG3                           (0x02UL << EXTI_REG_SHIFT)
00359 #define EXTI_REG_MASK                       (EXTI_REG1 | EXTI_REG2 | EXTI_REG3)
00360 #define EXTI_PIN_MASK                       0x0000001FUL
00361 
00362 /**
00363   * @brief  EXTI Target and bit usage
00364   */
00365 #define EXTI_TARGET_SHIFT                   20U
00366 #define EXTI_TARGET_MSK_NONE                (0x00UL << EXTI_TARGET_SHIFT)
00367 #define EXTI_TARGET_MSK_D3SRD               (0x01UL << EXTI_TARGET_SHIFT)
00368 #define EXTI_TARGET_MSK_CPU1                (0x02UL << EXTI_TARGET_SHIFT)
00369 #if defined (DUAL_CORE)
00370 #define EXTI_TARGET_MSK_CPU2                (0x04UL << EXTI_TARGET_SHIFT)
00371 #define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)
00372 #define EXTI_TARGET_MSK_ALL_CPU             (EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)
00373 #else
00374 #define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1)
00375 #define EXTI_TARGET_MSK_ALL_CPU              EXTI_TARGET_MSK_CPU1
00376 #endif /* DUAL_CORE */
00377 #define EXTI_TARGET_MSK_ALL                  EXTI_TARGET_MASK
00378 
00379 /**
00380   * @brief  EXTI Mask for interrupt & event mode
00381   */
00382 #if defined (DUAL_CORE)
00383 #define EXTI_MODE_MASK                      (EXTI_MODE_CORE1_EVENT | EXTI_MODE_CORE1_INTERRUPT | EXTI_MODE_CORE2_INTERRUPT | EXTI_MODE_CORE2_EVENT)
00384 #else
00385 #define EXTI_MODE_MASK                      (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)
00386 #endif /* DUAL_CORE */
00387 
00388 /**
00389   * @brief  EXTI Mask for trigger possibilities
00390   */
00391 #define EXTI_TRIGGER_MASK                   (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
00392 
00393 /**
00394   * @brief  EXTI Line number
00395   */
00396 #if (STM32H7_DEV_ID == 0x483UL)
00397 #define EXTI_LINE_NB                        92UL
00398 #elif (STM32H7_DEV_ID == 0x480UL)
00399 #define EXTI_LINE_NB                        89UL
00400 #else
00401 #define EXTI_LINE_NB                        88UL
00402 #endif /* EXTI_LINE_91 */
00403 
00404 /**
00405   * @}
00406   */
00407 
00408 /* Private macros ------------------------------------------------------------*/
00409 /** @defgroup EXTI_Private_Macros EXTI Private Macros
00410   * @{
00411   */
00412 #define IS_EXTI_PROPERTY(__EXTI_LINE__)      ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT) || \
00413                                              (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG)          || \
00414                                              (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO))
00415 #if defined (DUAL_CORE)
00416 #define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK)   == EXTI_TARGET_MSK_CPU1)      || \
00417                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU2)    || \
00418                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL_CPU) || \
00419                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))
00420 #else
00421 #define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU1)   || \
00422                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))
00423 #endif
00424 
00425 #define IS_EXTI_LINE(__EXTI_LINE__)          ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_EVENT_PRESENCE_MASK |\
00426                                               EXTI_REG_MASK | EXTI_PIN_MASK | EXTI_TARGET_MASK)) == 0x00UL) && \
00427                                               IS_EXTI_PROPERTY(__EXTI_LINE__) && IS_EXTI_TARGET(__EXTI_LINE__) && \
00428                                              (((__EXTI_LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK))      < \
00429                                              (((EXTI_LINE_NB / 32UL) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32UL))))
00430 
00431 #define IS_EXTI_MODE(__MODE__)               (((__MODE__) & ~EXTI_MODE_MASK) == 0x00UL)
00432 
00433 #define IS_EXTI_TRIGGER(__EXTI_LINE__)       (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00UL)
00434 
00435 #define IS_EXTI_PENDING_EDGE(__EXTI_LINE__)  (((__EXTI_LINE__) == EXTI_TRIGGER_RISING) || \
00436                                              ((__EXTI_LINE__) == EXTI_TRIGGER_FALLING)|| \
00437                                              ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING))
00438 
00439 #define IS_EXTI_CONFIG_LINE(__EXTI_LINE__)   (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00UL)
00440 
00441 #if defined(GPIOI)
00442 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
00443                                          ((__PORT__) == EXTI_GPIOB) || \
00444                                          ((__PORT__) == EXTI_GPIOC) || \
00445                                          ((__PORT__) == EXTI_GPIOD) || \
00446                                          ((__PORT__) == EXTI_GPIOE) || \
00447                                          ((__PORT__) == EXTI_GPIOF) || \
00448                                          ((__PORT__) == EXTI_GPIOG) || \
00449                                          ((__PORT__) == EXTI_GPIOH) || \
00450                                          ((__PORT__) == EXTI_GPIOI) || \
00451                                          ((__PORT__) == EXTI_GPIOJ) || \
00452                                          ((__PORT__) == EXTI_GPIOK))
00453 #else
00454 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
00455                                          ((__PORT__) == EXTI_GPIOB) || \
00456                                          ((__PORT__) == EXTI_GPIOC) || \
00457                                          ((__PORT__) == EXTI_GPIOD) || \
00458                                          ((__PORT__) == EXTI_GPIOE) || \
00459                                          ((__PORT__) == EXTI_GPIOF) || \
00460                                          ((__PORT__) == EXTI_GPIOG) || \
00461                                          ((__PORT__) == EXTI_GPIOH) || \
00462                                          ((__PORT__) == EXTI_GPIOJ) || \
00463                                          ((__PORT__) == EXTI_GPIOK))
00464 #endif /*GPIOI*/
00465 
00466 #define IS_EXTI_GPIO_PIN(__PIN__)       ((__PIN__) < 16UL)
00467 #if defined (LPTIM4) && defined (LPTIM5)
00468 #define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \
00469                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \
00470                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \
00471                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM4) || \
00472                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM5))
00473 #else
00474 #define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \
00475                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \
00476                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \
00477                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM2) || \
00478                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM3))
00479 #endif /* LPTIM4 && LPTIM5 */
00480 
00481 /**
00482   * @}
00483   */
00484 
00485 
00486 /* Exported functions --------------------------------------------------------*/
00487 /** @defgroup EXTI_Exported_Functions EXTI Exported Functions
00488   * @brief    EXTI Exported Functions
00489   * @{
00490   */
00491 
00492 /** @defgroup EXTI_Exported_Functions_Group1 Configuration functions
00493   * @brief    Configuration functions
00494   * @{
00495   */
00496 /* Configuration functions ****************************************************/
00497 HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
00498 HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
00499 HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);
00500 HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));
00501 HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);
00502 /**
00503   * @}
00504   */
00505 
00506 /** @defgroup EXTI_Exported_Functions_Group2 IO operation functions
00507   * @brief    IO operation functions
00508   * @{
00509   */
00510 /* IO operation functions *****************************************************/
00511 void              HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);
00512 uint32_t          HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
00513 void              HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
00514 void              HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
00515 
00516 /**
00517   * @}
00518   */
00519 
00520 /**
00521   * @}
00522   */
00523 
00524 /**
00525   * @}
00526   */
00527 
00528 /**
00529   * @}
00530   */
00531 
00532 #ifdef __cplusplus
00533 }
00534 #endif
00535 
00536 #endif /* STM32H7xx_HAL_EXTI_H */
00537