STM32H735xx HAL User Manual
stm32h7xx_hal_mdios.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_mdios.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of MDIOS 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_MDIOS_H
00021 #define STM32H7xx_HAL_MDIOS_H
00022 
00023 #ifdef __cplusplus
00024  extern "C" {
00025 #endif
00026 
00027 
00028 /* Includes ------------------------------------------------------------------*/
00029 #include "stm32h7xx_hal_def.h"
00030 
00031 #if defined (MDIOS)
00032 
00033 /** @addtogroup STM32H7xx_HAL_Driver
00034   * @{
00035   */
00036 
00037 /** @addtogroup MDIOS
00038   * @{
00039   */
00040 
00041 /* Exported types ------------------------------------------------------------*/
00042 /** @defgroup MDIOS_Exported_Types MDIOS Exported Types
00043   * @{
00044   */
00045 
00046 /** @defgroup MDIOS_Exported_Types_Group1 MDIOS State structures definition
00047   * @{
00048   */
00049 
00050 typedef enum
00051 {
00052   HAL_MDIOS_STATE_RESET             = 0x00U,    /*!< Peripheral not yet Initialized or disabled         */
00053   HAL_MDIOS_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use           */
00054   HAL_MDIOS_STATE_BUSY              = 0x02U,    /*!< an internal process is ongoing                     */
00055   HAL_MDIOS_STATE_ERROR             = 0x04U     /*!< Reception process is ongoing                       */
00056 }HAL_MDIOS_StateTypeDef;
00057 
00058 /**
00059   * @}
00060   */
00061 
00062 /** @defgroup MDIOS_Exported_Types_Group2 MDIOS Init Structure definition
00063   * @{
00064   */
00065 
00066 typedef struct
00067 {
00068   uint32_t PortAddress;           /*!< Specifies the MDIOS port address.
00069                                        This parameter can be a value from 0 to 31 */
00070   uint32_t PreambleCheck;         /*!< Specifies whether the preamble check is enabled or disabled.
00071                                        This parameter can be a value of @ref MDIOS_Preamble_Check */
00072 }MDIOS_InitTypeDef;
00073 
00074 /**
00075   * @}
00076   */
00077 
00078 /** @defgroup MDIOS_Exported_Types_Group4 MDIOS handle Structure definition
00079   * @{
00080   */
00081 
00082 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00083 typedef struct __MDIOS_HandleTypeDef
00084 #else
00085 typedef struct
00086 #endif
00087 {
00088   MDIOS_TypeDef                *Instance;     /*!< Register base address       */
00089 
00090   MDIOS_InitTypeDef            Init;          /*!< MDIOS Init Structure        */
00091 
00092   __IO HAL_MDIOS_StateTypeDef  State;         /*!< MDIOS communication state
00093                                                    This parameter can be a value of of @ref HAL_MDIOS_StateTypeDef */
00094 
00095   __IO uint32_t                ErrorCode;     /*!< Holds the global Error code of the MDIOS HAL status machine
00096                                                    This parameter can be a value of of @ref MDIOS_Error_Code */
00097 
00098   HAL_LockTypeDef              Lock;          /*!< MDIOS Lock                  */
00099 
00100 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00101 
00102   void    (* WriteCpltCallback)  ( struct __MDIOS_HandleTypeDef * hmdios);   /*!< MDIOS Write Complete Callback */
00103   void    (* ReadCpltCallback)   ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Read  Complete Callback     */
00104   void    (* ErrorCallback)      ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Error Callback   */
00105   void    (* WakeUpCallback)     ( struct __MDIOS_HandleTypeDef * hmdios);  /*!< MDIOS Wake UP Callback   */
00106 
00107   void    (* MspInitCallback)    ( struct __MDIOS_HandleTypeDef * hmdios);    /*!< MDIOS Msp Init callback              */
00108   void    (* MspDeInitCallback)  ( struct __MDIOS_HandleTypeDef * hmdios);    /*!< MDIOS Msp DeInit callback            */
00109 
00110 #endif  /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
00111 }MDIOS_HandleTypeDef;
00112 
00113 /**
00114   * @}
00115   */
00116 
00117 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00118 /**
00119   * @brief  HAL MDIOS Callback ID enumeration definition
00120   */
00121 typedef enum
00122 {
00123   HAL_MDIOS_MSPINIT_CB_ID            = 0x00U,    /*!< MDIOS MspInit callback ID           */
00124   HAL_MDIOS_MSPDEINIT_CB_ID          = 0x01U,    /*!< MDIOS MspDeInit callback ID         */
00125 
00126   HAL_MDIOS_WRITE_COMPLETE_CB_ID     = 0x02U,    /*!< MDIOS Write Complete Callback ID       */
00127   HAL_MDIOS_READ_COMPLETE_CB_ID      = 0x03U,    /*!< MDIOS Read Complete Callback ID       */
00128   HAL_MDIOS_ERROR_CB_ID              = 0x04U,    /*!< MDIOS Error Callback ID         */
00129   HAL_MDIOS_WAKEUP_CB_ID             = 0x05U     /*!< MDIOS Wake UP Callback ID           */
00130 }HAL_MDIOS_CallbackIDTypeDef;
00131 
00132 /**
00133   * @brief  HAL MDIOS Callback pointer definition
00134   */
00135 typedef  void (*pMDIOS_CallbackTypeDef)(MDIOS_HandleTypeDef * hmdios); /*!< pointer to an MDIOS callback function */
00136 
00137 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
00138 
00139 /**
00140   * @}
00141   */
00142 
00143 /* Exported constants --------------------------------------------------------*/
00144 /** @defgroup MDIOS_Exported_Constants MDIOS Exported Constants
00145   * @{
00146   */
00147 
00148 /** @defgroup MDIOS_Preamble_Check  MDIOS Preamble Check
00149   * @{
00150   */
00151 #define MDIOS_PREAMBLE_CHECK_ENABLE      ((uint32_t)0x00000000U)
00152 #define MDIOS_PREAMBLE_CHECK_DISABLE     MDIOS_CR_DPC
00153 /**
00154   * @}
00155   */
00156 
00157 /** @defgroup MDIOS_Input_Output_Registers_Definitions MDIOS Input Output Registers Definitions
00158   * @{
00159   */
00160 #define MDIOS_REG0                      ((uint32_t)0x00000000U)
00161 #define MDIOS_REG1                      ((uint32_t)0x00000001U)
00162 #define MDIOS_REG2                      ((uint32_t)0x00000002U)
00163 #define MDIOS_REG3                      ((uint32_t)0x00000003U)
00164 #define MDIOS_REG4                      ((uint32_t)0x00000004U)
00165 #define MDIOS_REG5                      ((uint32_t)0x00000005U)
00166 #define MDIOS_REG6                      ((uint32_t)0x00000006U)
00167 #define MDIOS_REG7                      ((uint32_t)0x00000007U)
00168 #define MDIOS_REG8                      ((uint32_t)0x00000008U)
00169 #define MDIOS_REG9                      ((uint32_t)0x00000009U)
00170 #define MDIOS_REG10                     ((uint32_t)0x0000000AU)
00171 #define MDIOS_REG11                     ((uint32_t)0x0000000BU)
00172 #define MDIOS_REG12                     ((uint32_t)0x0000000CU)
00173 #define MDIOS_REG13                     ((uint32_t)0x0000000DU)
00174 #define MDIOS_REG14                     ((uint32_t)0x0000000EU)
00175 #define MDIOS_REG15                     ((uint32_t)0x0000000FU)
00176 #define MDIOS_REG16                     ((uint32_t)0x00000010U)
00177 #define MDIOS_REG17                     ((uint32_t)0x00000011U)
00178 #define MDIOS_REG18                     ((uint32_t)0x00000012U)
00179 #define MDIOS_REG19                     ((uint32_t)0x00000013U)
00180 #define MDIOS_REG20                     ((uint32_t)0x00000014U)
00181 #define MDIOS_REG21                     ((uint32_t)0x00000015U)
00182 #define MDIOS_REG22                     ((uint32_t)0x00000016U)
00183 #define MDIOS_REG23                     ((uint32_t)0x00000017U)
00184 #define MDIOS_REG24                     ((uint32_t)0x00000018U)
00185 #define MDIOS_REG25                     ((uint32_t)0x00000019U)
00186 #define MDIOS_REG26                     ((uint32_t)0x0000001AU)
00187 #define MDIOS_REG27                     ((uint32_t)0x0000001BU)
00188 #define MDIOS_REG28                     ((uint32_t)0x0000001CU)
00189 #define MDIOS_REG29                     ((uint32_t)0x0000001DU)
00190 #define MDIOS_REG30                     ((uint32_t)0x0000001EU)
00191 #define MDIOS_REG31                     ((uint32_t)0x0000001FU)
00192 /**
00193   * @}
00194   */
00195 
00196 /** @defgroup MDIOS_Registers_Flags  MDIOS Registers Flags
00197   * @{
00198   */
00199 #define MDIOS_REG0_FLAG                 ((uint32_t)0x00000001U)
00200 #define MDIOS_REG1_FLAG                 ((uint32_t)0x00000002U)
00201 #define MDIOS_REG2_FLAG                 ((uint32_t)0x00000004U)
00202 #define MDIOS_REG3_FLAG                 ((uint32_t)0x00000008U)
00203 #define MDIOS_REG4_FLAG                 ((uint32_t)0x00000010U)
00204 #define MDIOS_REG5_FLAG                 ((uint32_t)0x00000020U)
00205 #define MDIOS_REG6_FLAG                 ((uint32_t)0x00000040U)
00206 #define MDIOS_REG7_FLAG                 ((uint32_t)0x00000080U)
00207 #define MDIOS_REG8_FLAG                 ((uint32_t)0x00000100U)
00208 #define MDIOS_REG9_FLAG                 ((uint32_t)0x00000200U)
00209 #define MDIOS_REG10_FLAG                ((uint32_t)0x00000400U)
00210 #define MDIOS_REG11_FLAG                ((uint32_t)0x00000800U)
00211 #define MDIOS_REG12_FLAG                ((uint32_t)0x00001000U)
00212 #define MDIOS_REG13_FLAG                ((uint32_t)0x00002000U)
00213 #define MDIOS_REG14_FLAG                ((uint32_t)0x00004000U)
00214 #define MDIOS_REG15_FLAG                ((uint32_t)0x00008000U)
00215 #define MDIOS_REG16_FLAG                ((uint32_t)0x00010000U)
00216 #define MDIOS_REG17_FLAG                ((uint32_t)0x00020000U)
00217 #define MDIOS_REG18_FLAG                ((uint32_t)0x00040000U)
00218 #define MDIOS_REG19_FLAG                ((uint32_t)0x00080000U)
00219 #define MDIOS_REG20_FLAG                ((uint32_t)0x00100000U)
00220 #define MDIOS_REG21_FLAG                ((uint32_t)0x00200000U)
00221 #define MDIOS_REG22_FLAG                ((uint32_t)0x00400000U)
00222 #define MDIOS_REG23_FLAG                ((uint32_t)0x00800000U)
00223 #define MDIOS_REG24_FLAG                ((uint32_t)0x01000000U)
00224 #define MDIOS_REG25_FLAG                ((uint32_t)0x02000000U)
00225 #define MDIOS_REG26_FLAG                ((uint32_t)0x04000000U)
00226 #define MDIOS_REG27_FLAG                ((uint32_t)0x08000000U)
00227 #define MDIOS_REG28_FLAG                ((uint32_t)0x10000000U)
00228 #define MDIOS_REG29_FLAG                ((uint32_t)0x20000000U)
00229 #define MDIOS_REG30_FLAG                ((uint32_t)0x40000000U)
00230 #define MDIOS_REG31_FLAG                ((uint32_t)0x80000000U)
00231 #define MDIOS_ALLREG_FLAG               ((uint32_t)0xFFFFFFFFU)
00232 /**
00233   * @}
00234   */
00235 
00236 /** @defgroup MDIOS_Interrupt_sources Interrupt Sources
00237   * @{
00238   */
00239 #define MDIOS_IT_WRITE                   MDIOS_CR_WRIE
00240 #define MDIOS_IT_READ                    MDIOS_CR_RDIE
00241 #define MDIOS_IT_ERROR                   MDIOS_CR_EIE
00242 /**
00243   * @}
00244   */
00245 
00246 /** @defgroup MDIOS_Interrupt_Flags  MDIOS Interrupt Flags
00247   * @{
00248   */
00249 #define MDIOS_TURNAROUND_ERROR_FLAG       MDIOS_SR_TERF
00250 #define MDIOS_START_ERROR_FLAG            MDIOS_SR_SERF
00251 #define MDIOS_PREAMBLE_ERROR_FLAG         MDIOS_SR_PERF
00252 /**
00253   * @}
00254   */
00255 
00256 /** @defgroup MDIOS_Error_Code MDIOS Error Code
00257   * @{
00258   */
00259 #define HAL_MDIOS_ERROR_NONE         ((uint32_t)0x00000000U)   /*!< No error            */
00260 #define HAL_MDIOS_ERROR_PARAM        ((uint32_t)0x00000001U)   /*!< Busy error          */
00261 #define HAL_MDIOS_ERROR_BUSY         ((uint32_t)0x00000002U)   /*!< Parameter error     */
00262 #define HAL_MDIOS_ERROR_TIMEOUT      ((uint32_t)0x00000004U)   /*!< Timeout error       */
00263 #define HAL_MDIOS_ERROR_DATA         ((uint32_t)0x00000010U)   /*!< Data transfer error       */
00264 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00265 #define HAL_MDIOS_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)    /*!< Invalid Callback error  */
00266 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
00267 /**
00268   * @}
00269   */
00270 
00271  /** @defgroup MDIOS_Wakeup_Line  MDIOS Wakeup Line
00272   * @{
00273   */
00274 #define MDIOS_WAKEUP_EXTI_LINE  ((uint32_t)0x00000400)  /* !<  42 - 32 = 10 */
00275 /**
00276   * @}
00277   */
00278 
00279 /**
00280   * @}
00281   */
00282 /* Exported macros -----------------------------------------------------------*/
00283 /** @defgroup MDIOS_Exported_Macros MDIOS Exported Macros
00284   * @{
00285   */
00286 
00287 /** @brief Reset MDIOS handle state
00288   * @param  __HANDLE__: MDIOS handle.
00289   * @retval None
00290   */
00291 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00292 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
00293                                                        (__HANDLE__)->State = HAL_MDIOS_STATE_RESET;      \
00294                                                        (__HANDLE__)->MspInitCallback = NULL;             \
00295                                                        (__HANDLE__)->MspDeInitCallback = NULL;           \
00296                                                      } while(0)
00297 #else
00298 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_MDIOS_STATE_RESET)
00299 #endif /*USE_HAL_MDIOS_REGISTER_CALLBACKS */
00300 
00301 /**
00302   * @brief  Enable/Disable the MDIOS peripheral.
00303   * @param  __HANDLE__: specifies the MDIOS handle.
00304   * @retval None
00305   */
00306 #define __HAL_MDIOS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= MDIOS_CR_EN)
00307 #define __HAL_MDIOS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~MDIOS_CR_EN)
00308 
00309 
00310 /**
00311   * @brief  Enable the MDIOS device interrupt.
00312   * @param  __HANDLE__: specifies the MDIOS handle.
00313   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be enabled.
00314   *         This parameter can be one or a combination of the following values:
00315   *            @arg MDIOS_IT_WRITE: Register write interrupt
00316   *            @arg MDIOS_IT_READ: Register read interrupt
00317   *            @arg MDIOS_IT_ERROR: Error interrupt
00318   * @retval None
00319   */
00320 #define __HAL_MDIOS_ENABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
00321 
00322 /**
00323   * @brief  Disable the MDIOS device interrupt.
00324   * @param  __HANDLE__: specifies the MDIOS handle.
00325   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be disabled.
00326   *         This parameter can be one or a combination of the following values:
00327   *            @arg MDIOS_IT_WRITE: Register write interrupt
00328   *            @arg MDIOS_IT_READ: Register read interrupt
00329   *            @arg MDIOS_IT_ERROR: Error interrupt
00330   * @retval None
00331   */
00332 #define __HAL_MDIOS_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
00333 
00334 /** @brief Set MDIOS slave get write register flag
00335   * @param  __HANDLE__: specifies the MDIOS handle.
00336   * @param  __FLAG__: specifies the write register flag
00337   * @retval The state of write flag
00338   */
00339 #define __HAL_MDIOS_GET_WRITE_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->WRFR &  (__FLAG__))
00340 
00341 /** @brief MDIOS slave get read register flag
00342   * @param  __HANDLE__: specifies the MDIOS handle.
00343   * @param  __FLAG__: specifies the read register flag
00344   * @retval The state of read flag
00345   */
00346 #define __HAL_MDIOS_GET_READ_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->RDFR &  (__FLAG__))
00347 
00348 /** @brief MDIOS slave get interrupt
00349   * @param  __HANDLE__: specifies the MDIOS handle.
00350   * @param  __FLAG__ : specifies the Error flag.
00351   *         This parameter can be one or a combination of the following values:
00352   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
00353   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
00354   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
00355   * @retval The state of the error flag
00356   */
00357 #define __HAL_MDIOS_GET_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->SR &  (__FLAG__))
00358 
00359 /** @brief  MDIOS slave clear interrupt
00360   * @param  __HANDLE__: specifies the MDIOS handle.
00361   * @param  __FLAG__ : specifies the Error flag.
00362   *         This parameter can be one or a combination of the following values:
00363   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
00364   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
00365   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
00366   * @retval none
00367   */
00368 #define __HAL_MDIOS_CLEAR_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->CLRFR) |= (__FLAG__)
00369 
00370 /**
00371   * @brief  Checks whether the specified MDIOS interrupt is set or not.
00372   * @param  __HANDLE__: specifies the MDIOS handle.
00373   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources
00374   *            This parameter can be one or a combination of the following values:
00375   *            @arg MDIOS_IT_WRITE: Register write interrupt
00376   *            @arg MDIOS_IT_READ: Register read interrupt
00377   *            @arg MDIOS_IT_ERROR: Error interrupt
00378   * @retval The state of the interrupt source
00379   */
00380 #define __HAL_MDIOS_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR & (__INTERRUPT__))
00381 
00382 /**
00383   * @brief Enable the MDIOS WAKEUP Exti Line.
00384   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
00385   * This parameter can be:
00386   *   @arg MDIOS_WAKEUP_EXTI_LINE
00387   * @retval None.
00388   */
00389 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__)   (EXTI->IMR2 |= (__EXTI_LINE__))
00390 
00391 #if defined(DUAL_CORE)
00392 /**
00393   * @brief Enable the MDIOS WAKEUP Exti Line by Domain2.
00394   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
00395   * This parameter can be:
00396   *   @arg MDIOS_WAKEUP_EXTI_LINE
00397   * @retval None.
00398   */
00399 #define __HAL_MDIOS_WAKEUP_EXTID2_ENABLE_IT(__EXTI_LINE__)   (EXTI->C2IMR2 |= (__EXTI_LINE__))
00400 
00401 #endif
00402 /**
00403   * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
00404   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
00405   * This parameter can be:
00406   *   @arg MDIOS_WAKEUP_EXTI_LINE
00407   * @retval EXTI MDIOS WAKEUP Line Status.
00408   */
00409 #define __HAL_MDIOS_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__)  (EXTI->PR2 & (__EXTI_LINE__))
00410 
00411 #if defined(DUAL_CORE)
00412 /**
00413   * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
00414   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
00415   * This parameter can be:
00416   *   @arg MDIOS_WAKEUP_EXTI_LINE
00417   * @retval EXTI MDIOS WAKEUP Line Status.
00418   */
00419 #define __HAL_MDIOS_WAKEUP_EXTID2_GET_FLAG(__EXTI_LINE__)  (EXTI->C2PR2 & (__EXTI_LINE__))
00420 #endif
00421 /**
00422   * @brief Clear the MDIOS WAKEUP Exti flag.
00423   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
00424   * This parameter can be:
00425   *   @arg MDIOS_WAKEUP_EXTI_LINE
00426   * @retval None.
00427   */
00428 #define __HAL_MDIOS_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR2 = (__EXTI_LINE__))
00429 
00430 #if defined(DUAL_CORE)
00431 /**
00432   * @brief Clear the MDIOS WAKEUP Exti flag.
00433   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
00434   * This parameter can be:
00435   *   @arg MDIOS_WAKEUP_EXTI_LINE
00436   * @retval None.
00437   */
00438 #define __HAL_MDIOS_WAKEUP_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR2 = (__EXTI_LINE__))
00439 
00440 #endif
00441 /**
00442   * @brief  enable rising edge interrupt on selected EXTI line.
00443   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
00444   * This parameter can be:
00445   *  @arg MDIOS_WAKEUP_EXTI_LINE
00446   * @retval None
00447   */
00448 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR2 &= ~(__EXTI_LINE__)); \
00449                                                                    (EXTI->RTSR2 |= (__EXTI_LINE__))
00450 
00451 /**
00452   * @brief  enable falling edge interrupt on selected EXTI line.
00453   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
00454   * This parameter can be:
00455   *  @arg MDIOS_WAKEUP_EXTI_LINE
00456   * @retval None
00457   */
00458 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 &= ~(__EXTI_LINE__));\
00459                                                                  (EXTI->FTSR2 |= (__EXTI_LINE__))
00460 
00461 /**
00462   * @brief  enable falling edge interrupt on selected EXTI line.
00463   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
00464   * This parameter can be:
00465   *  @arg MDIOS_WAKEUP_EXTI_LINE
00466   * @retval None
00467   */
00468 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 |= (__EXTI_LINE__));\
00469                                                                           (EXTI->FTSR2 |= (__EXTI_LINE__))
00470 
00471 /**
00472   * @brief  Generates a Software interrupt on selected EXTI line.
00473   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
00474   * This parameter can be:
00475   *  @arg MDIOS_WAKEUP_EXTI_LINE
00476   * @retval None
00477   */
00478 #define __HAL_MDIOS_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER2 |= (__EXTI_LINE__))
00479 
00480 /**
00481   * @}
00482   */
00483 
00484 /* Exported functions --------------------------------------------------------*/
00485 /** @defgroup MDIOS_Exported_Functions MDIOS Exported Functions
00486   * @{
00487   */
00488 
00489 /** @addtogroup MDIOS_Exported_Functions_Group1
00490   * @{
00491   */
00492 HAL_StatusTypeDef HAL_MDIOS_Init(MDIOS_HandleTypeDef *hmdios);
00493 HAL_StatusTypeDef HAL_MDIOS_DeInit(MDIOS_HandleTypeDef *hmdios);
00494 void HAL_MDIOS_MspInit(MDIOS_HandleTypeDef *hmdios);
00495 void  HAL_MDIOS_MspDeInit(MDIOS_HandleTypeDef *hmdios);
00496 
00497 /* Callbacks Register/UnRegister functions  ***********************************/
00498 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
00499 HAL_StatusTypeDef HAL_MDIOS_RegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID, pMDIOS_CallbackTypeDef pCallback);
00500 HAL_StatusTypeDef HAL_MDIOS_UnRegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID);
00501 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
00502 /**
00503   * @}
00504   */
00505 
00506 /** @addtogroup MDIOS_Exported_Functions_Group2
00507   * @{
00508   */
00509 HAL_StatusTypeDef HAL_MDIOS_WriteReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t Data);
00510 HAL_StatusTypeDef HAL_MDIOS_ReadReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t *pData);
00511 
00512 uint32_t HAL_MDIOS_GetWrittenRegAddress(MDIOS_HandleTypeDef *hmdios);
00513 uint32_t HAL_MDIOS_GetReadRegAddress(MDIOS_HandleTypeDef *hmdios);
00514 HAL_StatusTypeDef HAL_MDIOS_ClearWriteRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
00515 HAL_StatusTypeDef HAL_MDIOS_ClearReadRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
00516 
00517 HAL_StatusTypeDef HAL_MDIOS_EnableEvents(MDIOS_HandleTypeDef *hmdios);
00518 void HAL_MDIOS_IRQHandler(MDIOS_HandleTypeDef *hmdios);
00519 void HAL_MDIOS_WriteCpltCallback(MDIOS_HandleTypeDef *hmdios);
00520 void HAL_MDIOS_ReadCpltCallback(MDIOS_HandleTypeDef *hmdios);
00521 void HAL_MDIOS_ErrorCallback(MDIOS_HandleTypeDef *hmdios);
00522 void HAL_MDIOS_WakeUpCallback(MDIOS_HandleTypeDef *hmdios);
00523 /**
00524   * @}
00525   */
00526 
00527 /** @addtogroup MDIOS_Exported_Functions_Group3
00528   * @{
00529   */
00530 uint32_t HAL_MDIOS_GetError(MDIOS_HandleTypeDef *hmdios);
00531 HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(MDIOS_HandleTypeDef *hmdios);
00532 /**
00533   * @}
00534   */
00535 
00536 /**
00537   * @}
00538   */
00539 
00540 /* Private types -------------------------------------------------------------*/
00541 /** @defgroup MDIOS_Private_Types MDIOS Private Types
00542   * @{
00543   */
00544 
00545 /**
00546   * @}
00547   */
00548 
00549 /* Private variables ---------------------------------------------------------*/
00550 /** @defgroup MDIOS_Private_Variables MDIOS Private Variables
00551   * @{
00552   */
00553 
00554 /**
00555   * @}
00556   */
00557 
00558 /* Private constants ---------------------------------------------------------*/
00559 /** @defgroup MDIOS_Private_Constants MDIOS Private Constants
00560   * @{
00561   */
00562 
00563 /**
00564   * @}
00565   */
00566 
00567 /* Private macros ------------------------------------------------------------*/
00568 /** @defgroup MDIOS_Private_Macros MDIOS Private Macros
00569   * @{
00570   */
00571 
00572 #define IS_MDIOS_PORTADDRESS(__ADDR__) ((__ADDR__) < 32U)
00573 
00574 #define IS_MDIOS_REGISTER(__REGISTER__) ((__REGISTER__) < 32U)
00575 
00576 #define IS_MDIOS_PREAMBLECHECK(__PREAMBLECHECK__) (((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_ENABLE) || \
00577                                                    ((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_DISABLE))
00578 
00579  /**
00580   * @}
00581   */
00582 
00583 /* Private functions ---------------------------------------------------------*/
00584 /** @defgroup MDIOS_Private_Functions MDIOS Private Functions
00585   * @{
00586   */
00587 
00588 /**
00589   * @}
00590   */
00591 
00592 
00593 /**
00594   * @}
00595   */
00596 
00597 /**
00598   * @}
00599   */
00600 
00601 #endif /* MDIOS */
00602 
00603 #ifdef __cplusplus
00604 }
00605 #endif
00606 
00607 #endif /* STM32H7xx_HAL_MDIOS_H */
00608