Back to home page

LXR

 
 

    


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

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_mdios.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of MDIOS 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_MDIOS_H
0021 #define STM32H7xx_HAL_MDIOS_H
0022 
0023 #ifdef __cplusplus
0024  extern "C" {
0025 #endif
0026 
0027 
0028 /* Includes ------------------------------------------------------------------*/
0029 #include "stm32h7xx_hal_def.h"
0030 
0031 #if defined (MDIOS)
0032 
0033 /** @addtogroup STM32H7xx_HAL_Driver
0034   * @{
0035   */
0036 
0037 /** @addtogroup MDIOS
0038   * @{
0039   */
0040 
0041 /* Exported types ------------------------------------------------------------*/
0042 /** @defgroup MDIOS_Exported_Types MDIOS Exported Types
0043   * @ingroup RTEMSBSPsARMSTM32H7
0044   * @{
0045   */
0046 
0047 /** @defgroup MDIOS_Exported_Types_Group1 MDIOS State structures definition
0048   * @ingroup RTEMSBSPsARMSTM32H7
0049   * @{
0050   */
0051 
0052 typedef enum
0053 {
0054   HAL_MDIOS_STATE_RESET             = 0x00U,    /*!< Peripheral not yet Initialized or disabled         */
0055   HAL_MDIOS_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use           */
0056   HAL_MDIOS_STATE_BUSY              = 0x02U,    /*!< an internal process is ongoing                     */
0057   HAL_MDIOS_STATE_ERROR             = 0x04U     /*!< Reception process is ongoing                       */
0058 }HAL_MDIOS_StateTypeDef;
0059 
0060 /**
0061   * @}
0062   */
0063 
0064 /** @defgroup MDIOS_Exported_Types_Group2 MDIOS Init Structure definition
0065   * @ingroup RTEMSBSPsARMSTM32H7
0066   * @{
0067   */
0068 
0069 typedef struct
0070 {
0071   uint32_t PortAddress;           /*!< Specifies the MDIOS port address.
0072                                        This parameter can be a value from 0 to 31 */
0073   uint32_t PreambleCheck;         /*!< Specifies whether the preamble check is enabled or disabled.
0074                                        This parameter can be a value of @ref MDIOS_Preamble_Check */
0075 }MDIOS_InitTypeDef;
0076 
0077 /**
0078   * @}
0079   */
0080 
0081 /** @defgroup MDIOS_Exported_Types_Group4 MDIOS handle Structure definition
0082   * @ingroup RTEMSBSPsARMSTM32H7
0083   * @{
0084   */
0085 
0086 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0087 typedef struct __MDIOS_HandleTypeDef
0088 #else
0089 typedef struct
0090 #endif
0091 {
0092   MDIOS_TypeDef                *Instance;     /*!< Register base address       */
0093 
0094   MDIOS_InitTypeDef            Init;          /*!< MDIOS Init Structure        */
0095 
0096   __IO HAL_MDIOS_StateTypeDef  State;         /*!< MDIOS communication state
0097                                                    This parameter can be a value of of @ref HAL_MDIOS_StateTypeDef */
0098 
0099   __IO uint32_t                ErrorCode;     /*!< Holds the global Error code of the MDIOS HAL status machine
0100                                                    This parameter can be a value of of @ref MDIOS_Error_Code */
0101 
0102   HAL_LockTypeDef              Lock;          /*!< MDIOS Lock                  */
0103 
0104 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0105 
0106   void    (* WriteCpltCallback)  ( struct __MDIOS_HandleTypeDef * hmdios);   /*!< MDIOS Write Complete Callback */
0107   void    (* ReadCpltCallback)   ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Read  Complete Callback     */
0108   void    (* ErrorCallback)      ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Error Callback   */
0109   void    (* WakeUpCallback)     ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Wake UP Callback   */
0110 
0111   void    (* MspInitCallback)    ( struct __MDIOS_HandleTypeDef * hmdios);    /*!< MDIOS Msp Init callback              */
0112   void    (* MspDeInitCallback)  ( struct __MDIOS_HandleTypeDef * hmdios);    /*!< MDIOS Msp DeInit callback            */
0113 
0114 #endif  /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
0115 }MDIOS_HandleTypeDef;
0116 
0117 /**
0118   * @}
0119   */
0120 
0121 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0122 /**
0123   * @brief  HAL MDIOS Callback ID enumeration definition
0124   */
0125 typedef enum
0126 {
0127   HAL_MDIOS_MSPINIT_CB_ID            = 0x00U,    /*!< MDIOS MspInit callback ID           */
0128   HAL_MDIOS_MSPDEINIT_CB_ID          = 0x01U,    /*!< MDIOS MspDeInit callback ID         */
0129 
0130   HAL_MDIOS_WRITE_COMPLETE_CB_ID     = 0x02U,    /*!< MDIOS Write Complete Callback ID       */
0131   HAL_MDIOS_READ_COMPLETE_CB_ID      = 0x03U,    /*!< MDIOS Read Complete Callback ID       */
0132   HAL_MDIOS_ERROR_CB_ID              = 0x04U,    /*!< MDIOS Error Callback ID         */
0133   HAL_MDIOS_WAKEUP_CB_ID             = 0x05U     /*!< MDIOS Wake UP Callback ID           */
0134 }HAL_MDIOS_CallbackIDTypeDef;
0135 
0136 /**
0137   * @brief  HAL MDIOS Callback pointer definition
0138   */
0139 typedef  void (*pMDIOS_CallbackTypeDef)(MDIOS_HandleTypeDef * hmdios); /*!< pointer to an MDIOS callback function */
0140 
0141 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
0142 
0143 /**
0144   * @}
0145   */
0146 
0147 /* Exported constants --------------------------------------------------------*/
0148 /** @defgroup MDIOS_Exported_Constants MDIOS Exported Constants
0149   * @ingroup RTEMSBSPsARMSTM32H7
0150   * @{
0151   */
0152 
0153 /** @defgroup MDIOS_Preamble_Check  MDIOS Preamble Check
0154   * @ingroup RTEMSBSPsARMSTM32H7
0155   * @{
0156   */
0157 #define MDIOS_PREAMBLE_CHECK_ENABLE      ((uint32_t)0x00000000U)
0158 #define MDIOS_PREAMBLE_CHECK_DISABLE     MDIOS_CR_DPC
0159 /**
0160   * @}
0161   */
0162 
0163 /** @defgroup MDIOS_Input_Output_Registers_Definitions MDIOS Input Output Registers Definitions
0164   * @ingroup RTEMSBSPsARMSTM32H7
0165   * @{
0166   */
0167 #define MDIOS_REG0                      ((uint32_t)0x00000000U)
0168 #define MDIOS_REG1                      ((uint32_t)0x00000001U)
0169 #define MDIOS_REG2                      ((uint32_t)0x00000002U)
0170 #define MDIOS_REG3                      ((uint32_t)0x00000003U)
0171 #define MDIOS_REG4                      ((uint32_t)0x00000004U)
0172 #define MDIOS_REG5                      ((uint32_t)0x00000005U)
0173 #define MDIOS_REG6                      ((uint32_t)0x00000006U)
0174 #define MDIOS_REG7                      ((uint32_t)0x00000007U)
0175 #define MDIOS_REG8                      ((uint32_t)0x00000008U)
0176 #define MDIOS_REG9                      ((uint32_t)0x00000009U)
0177 #define MDIOS_REG10                     ((uint32_t)0x0000000AU)
0178 #define MDIOS_REG11                     ((uint32_t)0x0000000BU)
0179 #define MDIOS_REG12                     ((uint32_t)0x0000000CU)
0180 #define MDIOS_REG13                     ((uint32_t)0x0000000DU)
0181 #define MDIOS_REG14                     ((uint32_t)0x0000000EU)
0182 #define MDIOS_REG15                     ((uint32_t)0x0000000FU)
0183 #define MDIOS_REG16                     ((uint32_t)0x00000010U)
0184 #define MDIOS_REG17                     ((uint32_t)0x00000011U)
0185 #define MDIOS_REG18                     ((uint32_t)0x00000012U)
0186 #define MDIOS_REG19                     ((uint32_t)0x00000013U)
0187 #define MDIOS_REG20                     ((uint32_t)0x00000014U)
0188 #define MDIOS_REG21                     ((uint32_t)0x00000015U)
0189 #define MDIOS_REG22                     ((uint32_t)0x00000016U)
0190 #define MDIOS_REG23                     ((uint32_t)0x00000017U)
0191 #define MDIOS_REG24                     ((uint32_t)0x00000018U)
0192 #define MDIOS_REG25                     ((uint32_t)0x00000019U)
0193 #define MDIOS_REG26                     ((uint32_t)0x0000001AU)
0194 #define MDIOS_REG27                     ((uint32_t)0x0000001BU)
0195 #define MDIOS_REG28                     ((uint32_t)0x0000001CU)
0196 #define MDIOS_REG29                     ((uint32_t)0x0000001DU)
0197 #define MDIOS_REG30                     ((uint32_t)0x0000001EU)
0198 #define MDIOS_REG31                     ((uint32_t)0x0000001FU)
0199 /**
0200   * @}
0201   */
0202 
0203 /** @defgroup MDIOS_Registers_Flags  MDIOS Registers Flags
0204   * @ingroup RTEMSBSPsARMSTM32H7
0205   * @{
0206   */
0207 #define MDIOS_REG0_FLAG         ((uint32_t)0x00000001U)
0208 #define MDIOS_REG1_FLAG         ((uint32_t)0x00000002U)
0209 #define MDIOS_REG2_FLAG         ((uint32_t)0x00000004U)
0210 #define MDIOS_REG3_FLAG         ((uint32_t)0x00000008U)
0211 #define MDIOS_REG4_FLAG         ((uint32_t)0x00000010U)
0212 #define MDIOS_REG5_FLAG         ((uint32_t)0x00000020U)
0213 #define MDIOS_REG6_FLAG         ((uint32_t)0x00000040U)
0214 #define MDIOS_REG7_FLAG         ((uint32_t)0x00000080U)
0215 #define MDIOS_REG8_FLAG         ((uint32_t)0x00000100U)
0216 #define MDIOS_REG9_FLAG         ((uint32_t)0x00000200U)
0217 #define MDIOS_REG10_FLAG        ((uint32_t)0x00000400U)
0218 #define MDIOS_REG11_FLAG        ((uint32_t)0x00000800U)
0219 #define MDIOS_REG12_FLAG        ((uint32_t)0x00001000U)
0220 #define MDIOS_REG13_FLAG        ((uint32_t)0x00002000U)
0221 #define MDIOS_REG14_FLAG        ((uint32_t)0x00004000U)
0222 #define MDIOS_REG15_FLAG        ((uint32_t)0x00008000U)
0223 #define MDIOS_REG16_FLAG        ((uint32_t)0x00010000U)
0224 #define MDIOS_REG17_FLAG        ((uint32_t)0x00020000U)
0225 #define MDIOS_REG18_FLAG        ((uint32_t)0x00040000U)
0226 #define MDIOS_REG19_FLAG        ((uint32_t)0x00080000U)
0227 #define MDIOS_REG20_FLAG        ((uint32_t)0x00100000U)
0228 #define MDIOS_REG21_FLAG        ((uint32_t)0x00200000U)
0229 #define MDIOS_REG22_FLAG        ((uint32_t)0x00400000U)
0230 #define MDIOS_REG23_FLAG        ((uint32_t)0x00800000U)
0231 #define MDIOS_REG24_FLAG        ((uint32_t)0x01000000U)
0232 #define MDIOS_REG25_FLAG        ((uint32_t)0x02000000U)
0233 #define MDIOS_REG26_FLAG        ((uint32_t)0x04000000U)
0234 #define MDIOS_REG27_FLAG        ((uint32_t)0x08000000U)
0235 #define MDIOS_REG28_FLAG        ((uint32_t)0x10000000U)
0236 #define MDIOS_REG29_FLAG        ((uint32_t)0x20000000U)
0237 #define MDIOS_REG30_FLAG        ((uint32_t)0x40000000U)
0238 #define MDIOS_REG31_FLAG        ((uint32_t)0x80000000U)
0239 #define MDIOS_ALLREG_FLAG       ((uint32_t)0xFFFFFFFFU)
0240 /**
0241   * @}
0242   */
0243 
0244 /** @defgroup MDIOS_Interrupt_sources Interrupt Sources
0245   * @ingroup RTEMSBSPsARMSTM32H7
0246   * @{
0247   */
0248 #define MDIOS_IT_WRITE                   MDIOS_CR_WRIE
0249 #define MDIOS_IT_READ                    MDIOS_CR_RDIE
0250 #define MDIOS_IT_ERROR                   MDIOS_CR_EIE
0251 /**
0252   * @}
0253   */
0254 
0255 /** @defgroup MDIOS_Interrupt_Flags  MDIOS Interrupt Flags
0256   * @ingroup RTEMSBSPsARMSTM32H7
0257   * @{
0258   */
0259 #define MDIOS_TURNAROUND_ERROR_FLAG       MDIOS_SR_TERF
0260 #define MDIOS_START_ERROR_FLAG            MDIOS_SR_SERF
0261 #define MDIOS_PREAMBLE_ERROR_FLAG         MDIOS_SR_PERF
0262 /**
0263   * @}
0264   */
0265 
0266 /** @defgroup MDIOS_Error_Code MDIOS Error Code
0267   * @ingroup RTEMSBSPsARMSTM32H7
0268   * @{
0269   */
0270 #define HAL_MDIOS_ERROR_NONE         ((uint32_t)0x00000000U)   /*!< No error            */
0271 #define HAL_MDIOS_ERROR_PARAM        ((uint32_t)0x00000001U)   /*!< Busy error          */
0272 #define HAL_MDIOS_ERROR_BUSY         ((uint32_t)0x00000002U)   /*!< Parameter error     */
0273 #define HAL_MDIOS_ERROR_TIMEOUT      ((uint32_t)0x00000004U)   /*!< Timeout error       */
0274 #define HAL_MDIOS_ERROR_DATA         ((uint32_t)0x00000010U)   /*!< Data transfer error       */
0275 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0276 #define HAL_MDIOS_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)    /*!< Invalid Callback error  */
0277 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
0278 /**
0279   * @}
0280   */
0281 
0282  /** @defgroup MDIOS_Wakeup_Line  MDIOS Wakeup Line
0283    * @ingroup RTEMSBSPsARMSTM32H7
0284   * @{
0285   */
0286 #define MDIOS_WAKEUP_EXTI_LINE  ((uint32_t)0x00000400)  /* !<  42 - 32 = 10 */
0287 /**
0288   * @}
0289   */
0290 
0291 /**
0292   * @}
0293   */
0294 /* Exported macros -----------------------------------------------------------*/
0295 /** @defgroup MDIOS_Exported_Macros MDIOS Exported Macros
0296   * @ingroup RTEMSBSPsARMSTM32H7
0297   * @{
0298   */
0299 
0300 /** @brief Reset MDIOS handle state
0301   * @param  __HANDLE__: MDIOS handle.
0302   * @retval None
0303   */
0304 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0305 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
0306                                                        (__HANDLE__)->State = HAL_MDIOS_STATE_RESET;      \
0307                                                        (__HANDLE__)->MspInitCallback = NULL;             \
0308                                                        (__HANDLE__)->MspDeInitCallback = NULL;           \
0309                                                      } while(0)
0310 #else
0311 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_MDIOS_STATE_RESET)
0312 #endif /*USE_HAL_MDIOS_REGISTER_CALLBACKS */
0313 
0314 /**
0315   * @brief  Enable/Disable the MDIOS peripheral.
0316   * @param  __HANDLE__: specifies the MDIOS handle.
0317   * @retval None
0318   */
0319 #define __HAL_MDIOS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= MDIOS_CR_EN)
0320 #define __HAL_MDIOS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~MDIOS_CR_EN)
0321 
0322 
0323 /**
0324   * @brief  Enable the MDIOS device interrupt.
0325   * @param  __HANDLE__: specifies the MDIOS handle.
0326   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be enabled.
0327   *         This parameter can be one or a combination of the following values:
0328   *            @arg MDIOS_IT_WRITE: Register write interrupt
0329   *            @arg MDIOS_IT_READ: Register read interrupt
0330   *            @arg MDIOS_IT_ERROR: Error interrupt
0331   * @retval None
0332   */
0333 #define __HAL_MDIOS_ENABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
0334 
0335 /**
0336   * @brief  Disable the MDIOS device interrupt.
0337   * @param  __HANDLE__: specifies the MDIOS handle.
0338   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be disabled.
0339   *         This parameter can be one or a combination of the following values:
0340   *            @arg MDIOS_IT_WRITE: Register write interrupt
0341   *            @arg MDIOS_IT_READ: Register read interrupt
0342   *            @arg MDIOS_IT_ERROR: Error interrupt
0343   * @retval None
0344   */
0345 #define __HAL_MDIOS_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
0346 
0347 /** @brief Set MDIOS slave get write register flag
0348   * @param  __HANDLE__: specifies the MDIOS handle.
0349   * @param  __FLAG__: specifies the write register flag
0350   * @retval The state of write flag
0351   */
0352 #define __HAL_MDIOS_GET_WRITE_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->WRFR &  (__FLAG__))
0353 
0354 /** @brief MDIOS slave get read register flag
0355   * @param  __HANDLE__: specifies the MDIOS handle.
0356   * @param  __FLAG__: specifies the read register flag
0357   * @retval The state of read flag
0358   */
0359 #define __HAL_MDIOS_GET_READ_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->RDFR &  (__FLAG__))
0360 
0361 /** @brief MDIOS slave get interrupt
0362   * @param  __HANDLE__: specifies the MDIOS handle.
0363   * @param  __FLAG__ : specifies the Error flag.
0364   *         This parameter can be one or a combination of the following values:
0365   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
0366   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
0367   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
0368   * @retval The state of the error flag
0369   */
0370 #define __HAL_MDIOS_GET_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->SR &  (__FLAG__))
0371 
0372 /** @brief  MDIOS slave clear interrupt
0373   * @param  __HANDLE__: specifies the MDIOS handle.
0374   * @param  __FLAG__ : specifies the Error flag.
0375   *         This parameter can be one or a combination of the following values:
0376   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
0377   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
0378   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
0379   * @retval none
0380   */
0381 #define __HAL_MDIOS_CLEAR_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->CLRFR) |= (__FLAG__)
0382 
0383 /**
0384   * @brief  Checks whether the specified MDIOS interrupt is set or not.
0385   * @param  __HANDLE__: specifies the MDIOS handle.
0386   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources
0387   *            This parameter can be one or a combination of the following values:
0388   *            @arg MDIOS_IT_WRITE: Register write interrupt
0389   *            @arg MDIOS_IT_READ: Register read interrupt
0390   *            @arg MDIOS_IT_ERROR: Error interrupt
0391   * @retval The state of the interrupt source
0392   */
0393 #define __HAL_MDIOS_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR & (__INTERRUPT__))
0394 
0395 /**
0396   * @brief Enable the MDIOS WAKEUP Exti Line.
0397   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
0398   * This parameter can be:
0399   *   @arg MDIOS_WAKEUP_EXTI_LINE
0400   * @retval None.
0401   */
0402 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__)   (EXTI->IMR2 |= (__EXTI_LINE__))
0403 
0404 #if defined(DUAL_CORE)
0405 /**
0406   * @brief Enable the MDIOS WAKEUP Exti Line by Domain2.
0407   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
0408   * This parameter can be:
0409   *   @arg MDIOS_WAKEUP_EXTI_LINE
0410   * @retval None.
0411   */
0412 #define __HAL_MDIOS_WAKEUP_EXTID2_ENABLE_IT(__EXTI_LINE__)   (EXTI->C2IMR2 |= (__EXTI_LINE__))
0413 
0414 #endif
0415 /**
0416   * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
0417   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
0418   * This parameter can be:
0419   *   @arg MDIOS_WAKEUP_EXTI_LINE
0420   * @retval EXTI MDIOS WAKEUP Line Status.
0421   */
0422 #define __HAL_MDIOS_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__)  (EXTI->PR2 & (__EXTI_LINE__))
0423 
0424 #if defined(DUAL_CORE)
0425 /**
0426   * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
0427   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
0428   * This parameter can be:
0429   *   @arg MDIOS_WAKEUP_EXTI_LINE
0430   * @retval EXTI MDIOS WAKEUP Line Status.
0431   */
0432 #define __HAL_MDIOS_WAKEUP_EXTID2_GET_FLAG(__EXTI_LINE__)  (EXTI->C2PR2 & (__EXTI_LINE__))
0433 #endif
0434 /**
0435   * @brief Clear the MDIOS WAKEUP Exti flag.
0436   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
0437   * This parameter can be:
0438   *   @arg MDIOS_WAKEUP_EXTI_LINE
0439   * @retval None.
0440   */
0441 #define __HAL_MDIOS_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR2 = (__EXTI_LINE__))
0442 
0443 #if defined(DUAL_CORE)
0444 /**
0445   * @brief Clear the MDIOS WAKEUP Exti flag.
0446   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
0447   * This parameter can be:
0448   *   @arg MDIOS_WAKEUP_EXTI_LINE
0449   * @retval None.
0450   */
0451 #define __HAL_MDIOS_WAKEUP_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR2 = (__EXTI_LINE__))
0452 
0453 #endif
0454 /**
0455   * @brief  enable rising edge interrupt on selected EXTI line.
0456   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
0457   * This parameter can be:
0458   *  @arg MDIOS_WAKEUP_EXTI_LINE
0459   * @retval None
0460   */
0461 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR2 &= ~(__EXTI_LINE__)); \
0462                                                                    (EXTI->RTSR2 |= (__EXTI_LINE__))
0463 
0464 /**
0465   * @brief  enable falling edge interrupt on selected EXTI line.
0466   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
0467   * This parameter can be:
0468   *  @arg MDIOS_WAKEUP_EXTI_LINE
0469   * @retval None
0470   */
0471 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 &= ~(__EXTI_LINE__));\
0472                                                                  (EXTI->FTSR2 |= (__EXTI_LINE__))
0473 
0474 /**
0475   * @brief  enable falling edge interrupt on selected EXTI line.
0476   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
0477   * This parameter can be:
0478   *  @arg MDIOS_WAKEUP_EXTI_LINE
0479   * @retval None
0480   */
0481 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 |= (__EXTI_LINE__));\
0482                                                                           (EXTI->FTSR2 |= (__EXTI_LINE__))
0483 
0484 /**
0485   * @brief  Generates a Software interrupt on selected EXTI line.
0486   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
0487   * This parameter can be:
0488   *  @arg MDIOS_WAKEUP_EXTI_LINE
0489   * @retval None
0490   */
0491 #define __HAL_MDIOS_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER2 |= (__EXTI_LINE__))
0492 
0493 /**
0494   * @}
0495   */
0496 
0497 /* Exported functions --------------------------------------------------------*/
0498 /** @defgroup MDIOS_Exported_Functions MDIOS Exported Functions
0499   * @ingroup RTEMSBSPsARMSTM32H7
0500   * @{
0501   */
0502 
0503 /** @addtogroup MDIOS_Exported_Functions_Group1
0504   * @{
0505   */
0506 HAL_StatusTypeDef HAL_MDIOS_Init(MDIOS_HandleTypeDef *hmdios);
0507 HAL_StatusTypeDef HAL_MDIOS_DeInit(MDIOS_HandleTypeDef *hmdios);
0508 void HAL_MDIOS_MspInit(MDIOS_HandleTypeDef *hmdios);
0509 void  HAL_MDIOS_MspDeInit(MDIOS_HandleTypeDef *hmdios);
0510 
0511 /* Callbacks Register/UnRegister functions  ***********************************/
0512 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
0513 HAL_StatusTypeDef HAL_MDIOS_RegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID, pMDIOS_CallbackTypeDef pCallback);
0514 HAL_StatusTypeDef HAL_MDIOS_UnRegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID);
0515 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
0516 /**
0517   * @}
0518   */
0519 
0520 /** @addtogroup MDIOS_Exported_Functions_Group2
0521   * @{
0522   */
0523 HAL_StatusTypeDef HAL_MDIOS_WriteReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t Data);
0524 HAL_StatusTypeDef HAL_MDIOS_ReadReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t *pData);
0525 
0526 uint32_t HAL_MDIOS_GetWrittenRegAddress(MDIOS_HandleTypeDef *hmdios);
0527 uint32_t HAL_MDIOS_GetReadRegAddress(MDIOS_HandleTypeDef *hmdios);
0528 HAL_StatusTypeDef HAL_MDIOS_ClearWriteRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
0529 HAL_StatusTypeDef HAL_MDIOS_ClearReadRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
0530 
0531 HAL_StatusTypeDef HAL_MDIOS_EnableEvents(MDIOS_HandleTypeDef *hmdios);
0532 void HAL_MDIOS_IRQHandler(MDIOS_HandleTypeDef *hmdios);
0533 void HAL_MDIOS_WriteCpltCallback(MDIOS_HandleTypeDef *hmdios);
0534 void HAL_MDIOS_ReadCpltCallback(MDIOS_HandleTypeDef *hmdios);
0535 void HAL_MDIOS_ErrorCallback(MDIOS_HandleTypeDef *hmdios);
0536 void HAL_MDIOS_WakeUpCallback(MDIOS_HandleTypeDef *hmdios);
0537 /**
0538   * @}
0539   */
0540 
0541 /** @addtogroup MDIOS_Exported_Functions_Group3
0542   * @{
0543   */
0544 uint32_t HAL_MDIOS_GetError(MDIOS_HandleTypeDef *hmdios);
0545 HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(MDIOS_HandleTypeDef *hmdios);
0546 /**
0547   * @}
0548   */
0549 
0550 /**
0551   * @}
0552   */
0553 
0554 /* Private types -------------------------------------------------------------*/
0555 /** @defgroup MDIOS_Private_Types MDIOS Private Types
0556   * @ingroup RTEMSBSPsARMSTM32H7
0557   * @{
0558   */
0559 
0560 /**
0561   * @}
0562   */
0563 
0564 /* Private variables ---------------------------------------------------------*/
0565 /** @defgroup MDIOS_Private_Variables MDIOS Private Variables
0566   * @ingroup RTEMSBSPsARMSTM32H7
0567   * @{
0568   */
0569 
0570 /**
0571   * @}
0572   */
0573 
0574 /* Private constants ---------------------------------------------------------*/
0575 /** @defgroup MDIOS_Private_Constants MDIOS Private Constants
0576   * @ingroup RTEMSBSPsARMSTM32H7
0577   * @{
0578   */
0579 
0580 /**
0581   * @}
0582   */
0583 
0584 /* Private macros ------------------------------------------------------------*/
0585 /** @defgroup MDIOS_Private_Macros MDIOS Private Macros
0586   * @ingroup RTEMSBSPsARMSTM32H7
0587   * @{
0588   */
0589 
0590 #define IS_MDIOS_PORTADDRESS(__ADDR__) ((__ADDR__) < 32U)
0591 
0592 #define IS_MDIOS_REGISTER(__REGISTER__) ((__REGISTER__) < 32U)
0593 
0594 #define IS_MDIOS_PREAMBLECHECK(__PREAMBLECHECK__) (((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_ENABLE) || \
0595                                                    ((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_DISABLE))
0596 
0597  /**
0598   * @}
0599   */
0600 
0601 /* Private functions ---------------------------------------------------------*/
0602 /** @defgroup MDIOS_Private_Functions MDIOS Private Functions
0603   * @ingroup RTEMSBSPsARMSTM32H7
0604   * @{
0605   */
0606 
0607 /**
0608   * @}
0609   */
0610 
0611 
0612 /**
0613   * @}
0614   */
0615 
0616 /**
0617   * @}
0618   */
0619 
0620 #endif /* MDIOS */
0621 
0622 #ifdef __cplusplus
0623 }
0624 #endif
0625 
0626 #endif /* STM32H7xx_HAL_MDIOS_H */
0627