Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:35

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_exti.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of EXTI HAL module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_EXTI_H
0021 #define STM32H7xx_HAL_EXTI_H
0022 
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx_hal_def.h"
0029 
0030 /** @addtogroup STM32H7xx_HAL_Driver
0031   * @{
0032   */
0033 
0034 /** @defgroup EXTI EXTI
0035   * @ingroup RTEMSBSPsARMSTM32H7
0036   * @brief EXTI HAL module driver
0037   * @{
0038   */
0039 
0040 /* Exported types ------------------------------------------------------------*/
0041 
0042 /** @defgroup EXTI_Exported_Types EXTI Exported Types
0043   * @ingroup RTEMSBSPsARMSTM32H7
0044   * @{
0045   */
0046 typedef enum
0047 {
0048   HAL_EXTI_COMMON_CB_ID          = 0x00U,
0049 } EXTI_CallbackIDTypeDef;
0050 
0051 
0052 /**
0053   * @brief  EXTI Handle structure definition
0054   */
0055 typedef struct
0056 {
0057   uint32_t Line;                    /*!<  Exti line number */
0058   void (* PendingCallback)(void);   /*!<  Exti pending callback */
0059 } EXTI_HandleTypeDef;
0060 
0061 /**
0062   * @brief  EXTI Configuration structure definition
0063   */
0064 typedef struct
0065 {
0066   uint32_t Line;           /*!< The Exti line to be configured. This parameter
0067                                 can be a value of @ref EXTI_Line */
0068   uint32_t Mode;           /*!< The Exit Mode to be configured for a core.
0069                                 This parameter can be a combination of @ref EXTI_Mode */
0070   uint32_t Trigger;        /*!< The Exti Trigger to be configured. This parameter
0071                                 can be a value of @ref EXTI_Trigger */
0072   uint32_t GPIOSel;        /*!< The Exti GPIO multiplexer selection to be configured.
0073                                 This parameter is only possible for line 0 to 15. It
0074                                 can be a value of @ref EXTI_GPIOSel */
0075 
0076   uint32_t PendClearSource; /*!< Specifies the event pending clear source for D3/SRD
0077                                  domain. This parameter can be a value of @ref
0078                                  EXTI_PendClear_Source */
0079 
0080 } EXTI_ConfigTypeDef;
0081 
0082 /**
0083   * @}
0084   */
0085 
0086 /* Exported constants --------------------------------------------------------*/
0087 /** @defgroup EXTI_Exported_Constants EXTI Exported Constants
0088   * @ingroup RTEMSBSPsARMSTM32H7
0089   * @{
0090   */
0091 
0092 /** @defgroup EXTI_Line  EXTI Line
0093   * @ingroup RTEMSBSPsARMSTM32H7
0094   * @{
0095   */
0096 #define EXTI_LINE_0                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x00U)
0097 #define EXTI_LINE_1                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x01U)
0098 #define EXTI_LINE_2                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x02U)
0099 #define EXTI_LINE_3                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x03U)
0100 #define EXTI_LINE_4                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x04U)
0101 #define EXTI_LINE_5                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x05U)
0102 #define EXTI_LINE_6                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x06U)
0103 #define EXTI_LINE_7                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x07U)
0104 #define EXTI_LINE_8                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x08U)
0105 #define EXTI_LINE_9                         (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x09U)
0106 #define EXTI_LINE_10                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0AU)
0107 #define EXTI_LINE_11                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0BU)
0108 #define EXTI_LINE_12                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0CU)
0109 #define EXTI_LINE_13                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0DU)
0110 #define EXTI_LINE_14                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0EU)
0111 #define EXTI_LINE_15                        (EXTI_GPIO     | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x0FU)
0112 #define EXTI_LINE_16                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x10U)
0113 #define EXTI_LINE_17                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x11U)
0114 #define EXTI_LINE_18                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x12U)
0115 #define EXTI_LINE_19                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x13U)
0116 #define EXTI_LINE_20                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x14U)
0117 #define EXTI_LINE_21                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x15U)
0118 #define EXTI_LINE_22                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
0119 #define EXTI_LINE_23                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
0120 #define EXTI_LINE_24                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)
0121 #define EXTI_LINE_25                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL     | 0x19U)
0122 #define EXTI_LINE_26                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
0123 #define EXTI_LINE_27                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
0124 #define EXTI_LINE_28                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)
0125 #define EXTI_LINE_29                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)
0126 #define EXTI_LINE_30                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)
0127 #define EXTI_LINE_31                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG1 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)
0128 #define EXTI_LINE_32                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)
0129 #define EXTI_LINE_33                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)
0130 #define EXTI_LINE_34                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x02U)
0131 #define EXTI_LINE_35                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x03U)
0132 #define EXTI_LINE_36                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)
0133 #define EXTI_LINE_37                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)
0134 #define EXTI_LINE_38                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)
0135 #define EXTI_LINE_39                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)
0136 #define EXTI_LINE_40                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)
0137 #define EXTI_LINE_41                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x09U)
0138 #define EXTI_LINE_42                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)
0139 #define EXTI_LINE_43                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)
0140 #if !defined(USB2_OTG_FS)
0141 #define EXTI_LINE_44                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0CU)
0142 #else
0143 #define EXTI_LINE_44                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)
0144 #endif /* USB2_OTG_FS */
0145 #define EXTI_LINE_45                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0DU)
0146 #if defined(DSI)
0147 #define EXTI_LINE_46                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0EU)
0148 #else
0149 #define EXTI_LINE_46                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x0EU)
0150 #endif /* DSI */
0151 #define EXTI_LINE_47                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x0FU)
0152 #define EXTI_LINE_48                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x10U)
0153 #define EXTI_LINE_49                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x11U)
0154 #define EXTI_LINE_50                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x12U)
0155 #define EXTI_LINE_51                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x13U)
0156 #if defined(LPTIM4)
0157 #define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x14U)
0158 #else
0159 #define EXTI_LINE_52                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x14U)
0160 #endif /*LPTIM4*/
0161 #if defined(LPTIM5)
0162 #define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL     | 0x15U)
0163 #else
0164 #define EXTI_LINE_53                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)
0165 #endif /*LPTIM5*/
0166 #define EXTI_LINE_54                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
0167 #define EXTI_LINE_55                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
0168 #define EXTI_LINE_56                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x18U)
0169 #if defined(EXTI_IMR2_IM57)
0170 #define EXTI_LINE_57                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)
0171 #else
0172 #define EXTI_LINE_57                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x19U)
0173 #endif /*EXTI_IMR2_IM57*/
0174 #define EXTI_LINE_58                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
0175 #if defined(EXTI_IMR2_IM59)
0176 #define EXTI_LINE_59                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
0177 #else
0178 #define EXTI_LINE_59                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_NONE    | 0x1BU)
0179 #endif /*EXTI_IMR2_IM59*/
0180 #define EXTI_LINE_60                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1CU)
0181 #define EXTI_LINE_61                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1DU)
0182 #define EXTI_LINE_62                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1EU)
0183 #define EXTI_LINE_63                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG2 | EXTI_TARGET_MSK_ALL_CPU | 0x1FU)
0184 #define EXTI_LINE_64                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x00U)
0185 #define EXTI_LINE_65                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x01U)
0186 #define EXTI_LINE_66                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x02U)
0187 #define EXTI_LINE_67                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x03U)
0188 #define EXTI_LINE_68                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x04U)
0189 #define EXTI_LINE_69                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x05U)
0190 #define EXTI_LINE_70                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x06U)
0191 #define EXTI_LINE_71                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x07U)
0192 #define EXTI_LINE_72                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x08U)
0193 #define EXTI_LINE_73                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x09U)
0194 #define EXTI_LINE_74                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0AU)
0195 #if defined(ADC3)
0196 #define EXTI_LINE_75                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0BU)
0197 #else
0198 #define EXTI_LINE_75                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0BU)
0199 #endif /* ADC3 */
0200 #if defined(SAI4)
0201 #define EXTI_LINE_76                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x0CU)
0202 #else
0203 #define EXTI_LINE_76                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 |  EXTI_TARGET_MSK_NONE   | 0x0CU)
0204 #endif /* SAI4 */
0205 #if defined (DUAL_CORE)
0206 #define EXTI_LINE_77                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0DU)
0207 #define EXTI_LINE_78                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x0EU)
0208 #define EXTI_LINE_79                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x0FU)
0209 #define EXTI_LINE_80                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x10U)
0210 #else
0211 #define EXTI_LINE_77                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0DU)
0212 #define EXTI_LINE_78                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0EU)
0213 #define EXTI_LINE_79                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x0FU)
0214 #define EXTI_LINE_80                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x10U)
0215 #endif /* DUAL_CORE */
0216 #define EXTI_LINE_81                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x11U)
0217 #if defined (DUAL_CORE)
0218 #define EXTI_LINE_82                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU2| 0x12U)
0219 #else
0220 #define EXTI_LINE_82                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x12U)
0221 #endif /* DUAL_CORE */
0222 #define EXTI_LINE_83                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x13U)
0223 #if defined (DUAL_CORE)
0224 #define EXTI_LINE_84                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_CPU1| 0x14U)
0225 #else
0226 #define EXTI_LINE_84                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x14U)
0227 #endif /* DUAL_CORE */
0228 #define EXTI_LINE_85                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x15U)
0229 #if defined(ETH)
0230 #define EXTI_LINE_86                        (EXTI_CONFIG   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x16U)
0231 #else
0232 #define EXTI_LINE_86                        (EXTI_RESERVED | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_NONE| 0x16U)
0233 #endif /* ETH */
0234 #define EXTI_LINE_87                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x17U)
0235 #if defined(DTS)
0236 #define EXTI_LINE_88                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL | 0x18U)
0237 #endif /* DTS */
0238 #if defined(EXTI_IMR3_IM89)
0239 #define EXTI_LINE_89                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x19U)
0240 #endif /*EXTI_IMR3_IM89*/
0241 #if defined(EXTI_IMR3_IM90)
0242 #define EXTI_LINE_90                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1AU)
0243 #endif /*EXTI_IMR3_IM90*/
0244 #if defined(I2C5)
0245 #define EXTI_LINE_91                        (EXTI_DIRECT   | EXTI_EVENT | EXTI_REG3 | EXTI_TARGET_MSK_ALL_CPU | 0x1BU)
0246 #endif /*I2C5*/
0247 
0248 /**
0249   * @}
0250   */
0251 
0252 /** @defgroup EXTI_Mode  EXTI Mode
0253   * @ingroup RTEMSBSPsARMSTM32H7
0254   * @{
0255   */
0256 #define EXTI_MODE_NONE                      0x00000000U
0257 #define EXTI_MODE_INTERRUPT                 0x00000001U
0258 #define EXTI_MODE_EVENT                     0x00000002U
0259 #if defined(DUAL_CORE)
0260 #define EXTI_MODE_CORE1_INTERRUPT           EXTI_MODE_INTERRUPT
0261 #define EXTI_MODE_CORE1_EVENT               EXTI_MODE_EVENT
0262 #define EXTI_MODE_CORE2_INTERRUPT           0x00000010U
0263 #define EXTI_MODE_CORE2_EVENT               0x00000020U
0264 #endif /* DUAL_CORE */
0265 /**
0266   * @}
0267   */
0268 
0269 /** @defgroup EXTI_Trigger  EXTI Trigger
0270   * @ingroup RTEMSBSPsARMSTM32H7
0271   * @{
0272   */
0273 #define EXTI_TRIGGER_NONE                   0x00000000U
0274 #define EXTI_TRIGGER_RISING                 0x00000001U
0275 #define EXTI_TRIGGER_FALLING                0x00000002U
0276 #define EXTI_TRIGGER_RISING_FALLING         (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
0277 /**
0278   * @}
0279   */
0280 
0281 /** @defgroup EXTI_GPIOSel  EXTI GPIOSel
0282   * @ingroup RTEMSBSPsARMSTM32H7
0283   * @brief
0284   * @{
0285   */
0286 #define EXTI_GPIOA                          0x00000000U
0287 #define EXTI_GPIOB                          0x00000001U
0288 #define EXTI_GPIOC                          0x00000002U
0289 #define EXTI_GPIOD                          0x00000003U
0290 #define EXTI_GPIOE                          0x00000004U
0291 #define EXTI_GPIOF                          0x00000005U
0292 #define EXTI_GPIOG                          0x00000006U
0293 #define EXTI_GPIOH                          0x00000007U
0294 #if defined(GPIOI)
0295 #define EXTI_GPIOI                          0x00000008U
0296 #endif /*GPIOI*/
0297 #define EXTI_GPIOJ                          0x00000009U
0298 #define EXTI_GPIOK                          0x0000000AU
0299 
0300 /**
0301   * @}
0302   */
0303 
0304 /** @defgroup EXTI_PendClear_Source  EXTI PendClear Source
0305   * @ingroup RTEMSBSPsARMSTM32H7
0306   * @brief
0307   * @{
0308   */
0309 #define EXTI_D3_PENDCLR_SRC_NONE       0x00000000U /*!< No D3 domain pendclear source , PMRx register to be set to zero  */
0310 #define EXTI_D3_PENDCLR_SRC_DMACH6     0x00000001U /*!< DMA ch6 event selected as D3 domain pendclear source, PMRx register to be set to 1 */
0311 #define EXTI_D3_PENDCLR_SRC_DMACH7     0x00000002U /*!< DMA ch7 event selected as D3 domain pendclear source, PMRx register to be set to 1*/
0312 #if defined (LPTIM4)
0313 #define EXTI_D3_PENDCLR_SRC_LPTIM4     0x00000003U /*!< LPTIM4 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
0314 #else
0315 #define EXTI_D3_PENDCLR_SRC_LPTIM2     0x00000003U /*!< LPTIM2 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
0316 #endif
0317 #if defined (LPTIM5)
0318 #define EXTI_D3_PENDCLR_SRC_LPTIM5     0x00000004U /*!< LPTIM5 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
0319 #else
0320 #define EXTI_D3_PENDCLR_SRC_LPTIM3     0x00000004U /*!< LPTIM3 out selected as D3 domain pendclear source, PMRx register to be set to 1    */
0321 #endif
0322 /**
0323   * @}
0324   */
0325 
0326 /**
0327   * @}
0328   */
0329 
0330 /* Exported macro ------------------------------------------------------------*/
0331 /** @defgroup EXTI_Exported_Macros EXTI Exported Macros
0332   * @ingroup RTEMSBSPsARMSTM32H7
0333   * @{
0334   */
0335 
0336 /**
0337   * @}
0338   */
0339 
0340 /* Private constants --------------------------------------------------------*/
0341 /** @defgroup EXTI_Private_Constants EXTI Private Constants
0342   * @ingroup RTEMSBSPsARMSTM32H7
0343   * @{
0344   */
0345 /**
0346   * @brief  EXTI Line property definition
0347   */
0348 #define EXTI_PROPERTY_SHIFT                 24U
0349 #define EXTI_DIRECT                         (0x01UL << EXTI_PROPERTY_SHIFT)
0350 #define EXTI_CONFIG                         (0x02UL << EXTI_PROPERTY_SHIFT)
0351 #define EXTI_GPIO                           ((0x04UL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
0352 #define EXTI_RESERVED                       (0x08UL << EXTI_PROPERTY_SHIFT)
0353 #define EXTI_PROPERTY_MASK                  (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO)
0354 
0355 /**
0356   * @brief  EXTI Event presence definition
0357   */
0358 #define EXTI_EVENT_PRESENCE_SHIFT           28U
0359 #define EXTI_EVENT                          (0x01UL << EXTI_EVENT_PRESENCE_SHIFT)
0360 #define EXTI_EVENT_PRESENCE_MASK            (EXTI_EVENT)
0361 
0362 /**
0363   * @brief  EXTI Register and bit usage
0364   */
0365 #define EXTI_REG_SHIFT                      16U
0366 #define EXTI_REG1                           (0x00UL << EXTI_REG_SHIFT)
0367 #define EXTI_REG2                           (0x01UL << EXTI_REG_SHIFT)
0368 #define EXTI_REG3                           (0x02UL << EXTI_REG_SHIFT)
0369 #define EXTI_REG_MASK                       (EXTI_REG1 | EXTI_REG2 | EXTI_REG3)
0370 #define EXTI_PIN_MASK                       0x0000001FUL
0371 
0372 /**
0373   * @brief  EXTI Target and bit usage
0374   */
0375 #define EXTI_TARGET_SHIFT                   20U
0376 #define EXTI_TARGET_MSK_NONE                (0x00UL << EXTI_TARGET_SHIFT)
0377 #define EXTI_TARGET_MSK_D3SRD               (0x01UL << EXTI_TARGET_SHIFT)
0378 #define EXTI_TARGET_MSK_CPU1                (0x02UL << EXTI_TARGET_SHIFT)
0379 #if defined (DUAL_CORE)
0380 #define EXTI_TARGET_MSK_CPU2                (0x04UL << EXTI_TARGET_SHIFT)
0381 #define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)
0382 #define EXTI_TARGET_MSK_ALL_CPU             (EXTI_TARGET_MSK_CPU1 | EXTI_TARGET_MSK_CPU2)
0383 #else
0384 #define EXTI_TARGET_MASK                    (EXTI_TARGET_MSK_D3SRD | EXTI_TARGET_MSK_CPU1)
0385 #define EXTI_TARGET_MSK_ALL_CPU              EXTI_TARGET_MSK_CPU1
0386 #endif /* DUAL_CORE */
0387 #define EXTI_TARGET_MSK_ALL                  EXTI_TARGET_MASK
0388 
0389 /**
0390   * @brief  EXTI Mask for interrupt & event mode
0391   */
0392 #if defined (DUAL_CORE)
0393 #define EXTI_MODE_MASK                      (EXTI_MODE_CORE1_EVENT | EXTI_MODE_CORE1_INTERRUPT | EXTI_MODE_CORE2_INTERRUPT | EXTI_MODE_CORE2_EVENT)
0394 #else
0395 #define EXTI_MODE_MASK                      (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT)
0396 #endif /* DUAL_CORE */
0397 
0398 /**
0399   * @brief  EXTI Mask for trigger possibilities
0400   */
0401 #define EXTI_TRIGGER_MASK                   (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
0402 
0403 /**
0404   * @brief  EXTI Line number
0405   */
0406 #if (STM32H7_DEV_ID == 0x483UL)
0407 #define EXTI_LINE_NB                        92UL
0408 #elif (STM32H7_DEV_ID == 0x480UL)
0409 #define EXTI_LINE_NB                        89UL
0410 #else
0411 #define EXTI_LINE_NB                        88UL
0412 #endif /* EXTI_LINE_91 */
0413 
0414 /**
0415   * @}
0416   */
0417 
0418 /* Private macros ------------------------------------------------------------*/
0419 /** @defgroup EXTI_Private_Macros EXTI Private Macros
0420   * @ingroup RTEMSBSPsARMSTM32H7
0421   * @{
0422   */
0423 #define IS_EXTI_PROPERTY(__EXTI_LINE__)      ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT) || \
0424                                              (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG)          || \
0425                                              (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO))
0426 #if defined (DUAL_CORE)
0427 #define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK)   == EXTI_TARGET_MSK_CPU1)      || \
0428                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU2)    || \
0429                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL_CPU) || \
0430                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))
0431 #else
0432 #define IS_EXTI_TARGET(__EXTI_LINE__)        ((((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_CPU1)   || \
0433                                              (((__EXTI_LINE__) & EXTI_TARGET_MASK) == EXTI_TARGET_MSK_ALL))
0434 #endif
0435 
0436 #define IS_EXTI_LINE(__EXTI_LINE__)          ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_EVENT_PRESENCE_MASK |\
0437                                               EXTI_REG_MASK | EXTI_PIN_MASK | EXTI_TARGET_MASK)) == 0x00UL) && \
0438                                               IS_EXTI_PROPERTY(__EXTI_LINE__) && IS_EXTI_TARGET(__EXTI_LINE__) && \
0439                                              (((__EXTI_LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK))      < \
0440                                              (((EXTI_LINE_NB / 32UL) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32UL))))
0441 
0442 #define IS_EXTI_MODE(__MODE__)               (((__MODE__) & ~EXTI_MODE_MASK) == 0x00UL)
0443 
0444 #define IS_EXTI_TRIGGER(__EXTI_LINE__)       (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00UL)
0445 
0446 #define IS_EXTI_PENDING_EDGE(__EXTI_LINE__)  (((__EXTI_LINE__) == EXTI_TRIGGER_RISING) || \
0447                                              ((__EXTI_LINE__) == EXTI_TRIGGER_FALLING)|| \
0448                                              ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING))
0449 
0450 #define IS_EXTI_CONFIG_LINE(__EXTI_LINE__)   (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00UL)
0451 
0452 #if defined(GPIOI)
0453 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
0454                                          ((__PORT__) == EXTI_GPIOB) || \
0455                                          ((__PORT__) == EXTI_GPIOC) || \
0456                                          ((__PORT__) == EXTI_GPIOD) || \
0457                                          ((__PORT__) == EXTI_GPIOE) || \
0458                                          ((__PORT__) == EXTI_GPIOF) || \
0459                                          ((__PORT__) == EXTI_GPIOG) || \
0460                                          ((__PORT__) == EXTI_GPIOH) || \
0461                                          ((__PORT__) == EXTI_GPIOI) || \
0462                                          ((__PORT__) == EXTI_GPIOJ) || \
0463                                          ((__PORT__) == EXTI_GPIOK))
0464 #else
0465 #define IS_EXTI_GPIO_PORT(__PORT__)     (((__PORT__) == EXTI_GPIOA) || \
0466                                          ((__PORT__) == EXTI_GPIOB) || \
0467                                          ((__PORT__) == EXTI_GPIOC) || \
0468                                          ((__PORT__) == EXTI_GPIOD) || \
0469                                          ((__PORT__) == EXTI_GPIOE) || \
0470                                          ((__PORT__) == EXTI_GPIOF) || \
0471                                          ((__PORT__) == EXTI_GPIOG) || \
0472                                          ((__PORT__) == EXTI_GPIOH) || \
0473                                          ((__PORT__) == EXTI_GPIOJ) || \
0474                                          ((__PORT__) == EXTI_GPIOK))
0475 #endif /*GPIOI*/
0476 
0477 #define IS_EXTI_GPIO_PIN(__PIN__)       ((__PIN__) < 16UL)
0478 #if defined (LPTIM4) && defined (LPTIM5)
0479 #define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \
0480                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \
0481                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \
0482                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM4) || \
0483                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM5))
0484 #else
0485 #define IS_EXTI_D3_PENDCLR_SRC(__SRC__) (((__SRC__) == EXTI_D3_PENDCLR_SRC_NONE) || \
0486                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH6) || \
0487                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_DMACH7) || \
0488                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM2) || \
0489                                          ((__SRC__) == EXTI_D3_PENDCLR_SRC_LPTIM3))
0490 #endif /* LPTIM4 && LPTIM5 */
0491 
0492 /**
0493   * @}
0494   */
0495 
0496 
0497 /* Exported functions --------------------------------------------------------*/
0498 /** @defgroup EXTI_Exported_Functions EXTI Exported Functions
0499   * @ingroup RTEMSBSPsARMSTM32H7
0500   * @brief    EXTI Exported Functions
0501   * @{
0502   */
0503 
0504 /** @defgroup EXTI_Exported_Functions_Group1 Configuration functions
0505   * @ingroup RTEMSBSPsARMSTM32H7
0506   * @brief    Configuration functions
0507   * @{
0508   */
0509 /* Configuration functions ****************************************************/
0510 HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
0511 HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig);
0512 HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti);
0513 HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void));
0514 HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine);
0515 /**
0516   * @}
0517   */
0518 
0519 /** @defgroup EXTI_Exported_Functions_Group2 IO operation functions
0520   * @ingroup RTEMSBSPsARMSTM32H7
0521   * @brief    IO operation functions
0522   * @{
0523   */
0524 /* IO operation functions *****************************************************/
0525 void              HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti);
0526 uint32_t          HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
0527 void              HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge);
0528 void              HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
0529 
0530 /**
0531   * @}
0532   */
0533 
0534 /**
0535   * @}
0536   */
0537 
0538 /**
0539   * @}
0540   */
0541 
0542 /**
0543   * @}
0544   */
0545 
0546 #ifdef __cplusplus
0547 }
0548 #endif
0549 
0550 #endif /* STM32H7xx_HAL_EXTI_H */
0551