You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

611 lines
22 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_hal_mdios.h
  4. * @author MCD Application Team
  5. * @brief Header file of MDIOS HAL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32H7xx_HAL_MDIOS_H
  21. #define STM32H7xx_HAL_MDIOS_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32h7xx_hal_def.h"
  27. #if defined (MDIOS)
  28. /** @addtogroup STM32H7xx_HAL_Driver
  29. * @{
  30. */
  31. /** @addtogroup MDIOS
  32. * @{
  33. */
  34. /* Exported types ------------------------------------------------------------*/
  35. /** @defgroup MDIOS_Exported_Types MDIOS Exported Types
  36. * @{
  37. */
  38. /** @defgroup MDIOS_Exported_Types_Group1 MDIOS State structures definition
  39. * @{
  40. */
  41. typedef enum
  42. {
  43. HAL_MDIOS_STATE_RESET = 0x00U, /*!< Peripheral not yet Initialized or disabled */
  44. HAL_MDIOS_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */
  45. HAL_MDIOS_STATE_BUSY = 0x02U, /*!< an internal process is ongoing */
  46. HAL_MDIOS_STATE_ERROR = 0x04U /*!< Reception process is ongoing */
  47. }HAL_MDIOS_StateTypeDef;
  48. /**
  49. * @}
  50. */
  51. /** @defgroup MDIOS_Exported_Types_Group2 MDIOS Init Structure definition
  52. * @{
  53. */
  54. typedef struct
  55. {
  56. uint32_t PortAddress; /*!< Specifies the MDIOS port address.
  57. This parameter can be a value from 0 to 31 */
  58. uint32_t PreambleCheck; /*!< Specifies whether the preamble check is enabled or disabled.
  59. This parameter can be a value of @ref MDIOS_Preamble_Check */
  60. }MDIOS_InitTypeDef;
  61. /**
  62. * @}
  63. */
  64. /** @defgroup MDIOS_Exported_Types_Group4 MDIOS handle Structure definition
  65. * @{
  66. */
  67. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  68. typedef struct __MDIOS_HandleTypeDef
  69. #else
  70. typedef struct
  71. #endif
  72. {
  73. MDIOS_TypeDef *Instance; /*!< Register base address */
  74. MDIOS_InitTypeDef Init; /*!< MDIOS Init Structure */
  75. __IO HAL_MDIOS_StateTypeDef State; /*!< MDIOS communication state
  76. This parameter can be a value of of @ref HAL_MDIOS_StateTypeDef */
  77. __IO uint32_t ErrorCode; /*!< Holds the global Error code of the MDIOS HAL status machine
  78. This parameter can be a value of of @ref MDIOS_Error_Code */
  79. HAL_LockTypeDef Lock; /*!< MDIOS Lock */
  80. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  81. void (* WriteCpltCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Write Complete Callback */
  82. void (* ReadCpltCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Read Complete Callback */
  83. void (* ErrorCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Error Callback */
  84. void (* WakeUpCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Wake UP Callback */
  85. void (* MspInitCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Msp Init callback */
  86. void (* MspDeInitCallback) ( struct __MDIOS_HandleTypeDef * hmdios); /*!< MDIOS Msp DeInit callback */
  87. #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
  88. }MDIOS_HandleTypeDef;
  89. /**
  90. * @}
  91. */
  92. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  93. /**
  94. * @brief HAL MDIOS Callback ID enumeration definition
  95. */
  96. typedef enum
  97. {
  98. HAL_MDIOS_MSPINIT_CB_ID = 0x00U, /*!< MDIOS MspInit callback ID */
  99. HAL_MDIOS_MSPDEINIT_CB_ID = 0x01U, /*!< MDIOS MspDeInit callback ID */
  100. HAL_MDIOS_WRITE_COMPLETE_CB_ID = 0x02U, /*!< MDIOS Write Complete Callback ID */
  101. HAL_MDIOS_READ_COMPLETE_CB_ID = 0x03U, /*!< MDIOS Read Complete Callback ID */
  102. HAL_MDIOS_ERROR_CB_ID = 0x04U, /*!< MDIOS Error Callback ID */
  103. HAL_MDIOS_WAKEUP_CB_ID = 0x05U /*!< MDIOS Wake UP Callback ID */
  104. }HAL_MDIOS_CallbackIDTypeDef;
  105. /**
  106. * @brief HAL MDIOS Callback pointer definition
  107. */
  108. typedef void (*pMDIOS_CallbackTypeDef)(MDIOS_HandleTypeDef * hmdios); /*!< pointer to an MDIOS callback function */
  109. #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
  110. /**
  111. * @}
  112. */
  113. /* Exported constants --------------------------------------------------------*/
  114. /** @defgroup MDIOS_Exported_Constants MDIOS Exported Constants
  115. * @{
  116. */
  117. /** @defgroup MDIOS_Preamble_Check MDIOS Preamble Check
  118. * @{
  119. */
  120. #define MDIOS_PREAMBLE_CHECK_ENABLE ((uint32_t)0x00000000U)
  121. #define MDIOS_PREAMBLE_CHECK_DISABLE MDIOS_CR_DPC
  122. /**
  123. * @}
  124. */
  125. /** @defgroup MDIOS_Input_Output_Registers_Definitions MDIOS Input Output Registers Definitions
  126. * @{
  127. */
  128. #define MDIOS_REG0 ((uint32_t)0x00000000U)
  129. #define MDIOS_REG1 ((uint32_t)0x00000001U)
  130. #define MDIOS_REG2 ((uint32_t)0x00000002U)
  131. #define MDIOS_REG3 ((uint32_t)0x00000003U)
  132. #define MDIOS_REG4 ((uint32_t)0x00000004U)
  133. #define MDIOS_REG5 ((uint32_t)0x00000005U)
  134. #define MDIOS_REG6 ((uint32_t)0x00000006U)
  135. #define MDIOS_REG7 ((uint32_t)0x00000007U)
  136. #define MDIOS_REG8 ((uint32_t)0x00000008U)
  137. #define MDIOS_REG9 ((uint32_t)0x00000009U)
  138. #define MDIOS_REG10 ((uint32_t)0x0000000AU)
  139. #define MDIOS_REG11 ((uint32_t)0x0000000BU)
  140. #define MDIOS_REG12 ((uint32_t)0x0000000CU)
  141. #define MDIOS_REG13 ((uint32_t)0x0000000DU)
  142. #define MDIOS_REG14 ((uint32_t)0x0000000EU)
  143. #define MDIOS_REG15 ((uint32_t)0x0000000FU)
  144. #define MDIOS_REG16 ((uint32_t)0x00000010U)
  145. #define MDIOS_REG17 ((uint32_t)0x00000011U)
  146. #define MDIOS_REG18 ((uint32_t)0x00000012U)
  147. #define MDIOS_REG19 ((uint32_t)0x00000013U)
  148. #define MDIOS_REG20 ((uint32_t)0x00000014U)
  149. #define MDIOS_REG21 ((uint32_t)0x00000015U)
  150. #define MDIOS_REG22 ((uint32_t)0x00000016U)
  151. #define MDIOS_REG23 ((uint32_t)0x00000017U)
  152. #define MDIOS_REG24 ((uint32_t)0x00000018U)
  153. #define MDIOS_REG25 ((uint32_t)0x00000019U)
  154. #define MDIOS_REG26 ((uint32_t)0x0000001AU)
  155. #define MDIOS_REG27 ((uint32_t)0x0000001BU)
  156. #define MDIOS_REG28 ((uint32_t)0x0000001CU)
  157. #define MDIOS_REG29 ((uint32_t)0x0000001DU)
  158. #define MDIOS_REG30 ((uint32_t)0x0000001EU)
  159. #define MDIOS_REG31 ((uint32_t)0x0000001FU)
  160. /**
  161. * @}
  162. */
  163. /** @defgroup MDIOS_Registers_Flags MDIOS Registers Flags
  164. * @{
  165. */
  166. #define MDIOS_REG0_FLAG ((uint32_t)0x00000001U)
  167. #define MDIOS_REG1_FLAG ((uint32_t)0x00000002U)
  168. #define MDIOS_REG2_FLAG ((uint32_t)0x00000004U)
  169. #define MDIOS_REG3_FLAG ((uint32_t)0x00000008U)
  170. #define MDIOS_REG4_FLAG ((uint32_t)0x00000010U)
  171. #define MDIOS_REG5_FLAG ((uint32_t)0x00000020U)
  172. #define MDIOS_REG6_FLAG ((uint32_t)0x00000040U)
  173. #define MDIOS_REG7_FLAG ((uint32_t)0x00000080U)
  174. #define MDIOS_REG8_FLAG ((uint32_t)0x00000100U)
  175. #define MDIOS_REG9_FLAG ((uint32_t)0x00000200U)
  176. #define MDIOS_REG10_FLAG ((uint32_t)0x00000400U)
  177. #define MDIOS_REG11_FLAG ((uint32_t)0x00000800U)
  178. #define MDIOS_REG12_FLAG ((uint32_t)0x00001000U)
  179. #define MDIOS_REG13_FLAG ((uint32_t)0x00002000U)
  180. #define MDIOS_REG14_FLAG ((uint32_t)0x00004000U)
  181. #define MDIOS_REG15_FLAG ((uint32_t)0x00008000U)
  182. #define MDIOS_REG16_FLAG ((uint32_t)0x00010000U)
  183. #define MDIOS_REG17_FLAG ((uint32_t)0x00020000U)
  184. #define MDIOS_REG18_FLAG ((uint32_t)0x00040000U)
  185. #define MDIOS_REG19_FLAG ((uint32_t)0x00080000U)
  186. #define MDIOS_REG20_FLAG ((uint32_t)0x00100000U)
  187. #define MDIOS_REG21_FLAG ((uint32_t)0x00200000U)
  188. #define MDIOS_REG22_FLAG ((uint32_t)0x00400000U)
  189. #define MDIOS_REG23_FLAG ((uint32_t)0x00800000U)
  190. #define MDIOS_REG24_FLAG ((uint32_t)0x01000000U)
  191. #define MDIOS_REG25_FLAG ((uint32_t)0x02000000U)
  192. #define MDIOS_REG26_FLAG ((uint32_t)0x04000000U)
  193. #define MDIOS_REG27_FLAG ((uint32_t)0x08000000U)
  194. #define MDIOS_REG28_FLAG ((uint32_t)0x10000000U)
  195. #define MDIOS_REG29_FLAG ((uint32_t)0x20000000U)
  196. #define MDIOS_REG30_FLAG ((uint32_t)0x40000000U)
  197. #define MDIOS_REG31_FLAG ((uint32_t)0x80000000U)
  198. #define MDIOS_ALLREG_FLAG ((uint32_t)0xFFFFFFFFU)
  199. /**
  200. * @}
  201. */
  202. /** @defgroup MDIOS_Interrupt_sources Interrupt Sources
  203. * @{
  204. */
  205. #define MDIOS_IT_WRITE MDIOS_CR_WRIE
  206. #define MDIOS_IT_READ MDIOS_CR_RDIE
  207. #define MDIOS_IT_ERROR MDIOS_CR_EIE
  208. /**
  209. * @}
  210. */
  211. /** @defgroup MDIOS_Interrupt_Flags MDIOS Interrupt Flags
  212. * @{
  213. */
  214. #define MDIOS_TURNAROUND_ERROR_FLAG MDIOS_SR_TERF
  215. #define MDIOS_START_ERROR_FLAG MDIOS_SR_SERF
  216. #define MDIOS_PREAMBLE_ERROR_FLAG MDIOS_SR_PERF
  217. /**
  218. * @}
  219. */
  220. /** @defgroup MDIOS_Error_Code MDIOS Error Code
  221. * @{
  222. */
  223. #define HAL_MDIOS_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */
  224. #define HAL_MDIOS_ERROR_PARAM ((uint32_t)0x00000001U) /*!< Busy error */
  225. #define HAL_MDIOS_ERROR_BUSY ((uint32_t)0x00000002U) /*!< Parameter error */
  226. #define HAL_MDIOS_ERROR_TIMEOUT ((uint32_t)0x00000004U) /*!< Timeout error */
  227. #define HAL_MDIOS_ERROR_DATA ((uint32_t)0x00000010U) /*!< Data transfer error */
  228. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  229. #define HAL_MDIOS_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U) /*!< Invalid Callback error */
  230. #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
  231. /**
  232. * @}
  233. */
  234. /** @defgroup MDIOS_Wakeup_Line MDIOS Wakeup Line
  235. * @{
  236. */
  237. #define MDIOS_WAKEUP_EXTI_LINE ((uint32_t)0x00000400) /* !< 42 - 32 = 10 */
  238. /**
  239. * @}
  240. */
  241. /**
  242. * @}
  243. */
  244. /* Exported macros -----------------------------------------------------------*/
  245. /** @defgroup MDIOS_Exported_Macros MDIOS Exported Macros
  246. * @{
  247. */
  248. /** @brief Reset MDIOS handle state
  249. * @param __HANDLE__: MDIOS handle.
  250. * @retval None
  251. */
  252. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  253. #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__) do{ \
  254. (__HANDLE__)->State = HAL_MDIOS_STATE_RESET; \
  255. (__HANDLE__)->MspInitCallback = NULL; \
  256. (__HANDLE__)->MspDeInitCallback = NULL; \
  257. } while(0)
  258. #else
  259. #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_MDIOS_STATE_RESET)
  260. #endif /*USE_HAL_MDIOS_REGISTER_CALLBACKS */
  261. /**
  262. * @brief Enable/Disable the MDIOS peripheral.
  263. * @param __HANDLE__: specifies the MDIOS handle.
  264. * @retval None
  265. */
  266. #define __HAL_MDIOS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= MDIOS_CR_EN)
  267. #define __HAL_MDIOS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~MDIOS_CR_EN)
  268. /**
  269. * @brief Enable the MDIOS device interrupt.
  270. * @param __HANDLE__: specifies the MDIOS handle.
  271. * @param __INTERRUPT__ : specifies the MDIOS interrupt sources to be enabled.
  272. * This parameter can be one or a combination of the following values:
  273. * @arg MDIOS_IT_WRITE: Register write interrupt
  274. * @arg MDIOS_IT_READ: Register read interrupt
  275. * @arg MDIOS_IT_ERROR: Error interrupt
  276. * @retval None
  277. */
  278. #define __HAL_MDIOS_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
  279. /**
  280. * @brief Disable the MDIOS device interrupt.
  281. * @param __HANDLE__: specifies the MDIOS handle.
  282. * @param __INTERRUPT__ : specifies the MDIOS interrupt sources to be disabled.
  283. * This parameter can be one or a combination of the following values:
  284. * @arg MDIOS_IT_WRITE: Register write interrupt
  285. * @arg MDIOS_IT_READ: Register read interrupt
  286. * @arg MDIOS_IT_ERROR: Error interrupt
  287. * @retval None
  288. */
  289. #define __HAL_MDIOS_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
  290. /** @brief Set MDIOS slave get write register flag
  291. * @param __HANDLE__: specifies the MDIOS handle.
  292. * @param __FLAG__: specifies the write register flag
  293. * @retval The state of write flag
  294. */
  295. #define __HAL_MDIOS_GET_WRITE_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->WRFR & (__FLAG__))
  296. /** @brief MDIOS slave get read register flag
  297. * @param __HANDLE__: specifies the MDIOS handle.
  298. * @param __FLAG__: specifies the read register flag
  299. * @retval The state of read flag
  300. */
  301. #define __HAL_MDIOS_GET_READ_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->RDFR & (__FLAG__))
  302. /** @brief MDIOS slave get interrupt
  303. * @param __HANDLE__: specifies the MDIOS handle.
  304. * @param __FLAG__ : specifies the Error flag.
  305. * This parameter can be one or a combination of the following values:
  306. * @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
  307. * @arg MDIOS_START_ERROR_FLAG: Register read interrupt
  308. * @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
  309. * @retval The state of the error flag
  310. */
  311. #define __HAL_MDIOS_GET_ERROR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR & (__FLAG__))
  312. /** @brief MDIOS slave clear interrupt
  313. * @param __HANDLE__: specifies the MDIOS handle.
  314. * @param __FLAG__ : specifies the Error flag.
  315. * This parameter can be one or a combination of the following values:
  316. * @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
  317. * @arg MDIOS_START_ERROR_FLAG: Register read interrupt
  318. * @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
  319. * @retval none
  320. */
  321. #define __HAL_MDIOS_CLEAR_ERROR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CLRFR) |= (__FLAG__)
  322. /**
  323. * @brief Checks whether the specified MDIOS interrupt is set or not.
  324. * @param __HANDLE__: specifies the MDIOS handle.
  325. * @param __INTERRUPT__ : specifies the MDIOS interrupt sources
  326. * This parameter can be one or a combination of the following values:
  327. * @arg MDIOS_IT_WRITE: Register write interrupt
  328. * @arg MDIOS_IT_READ: Register read interrupt
  329. * @arg MDIOS_IT_ERROR: Error interrupt
  330. * @retval The state of the interrupt source
  331. */
  332. #define __HAL_MDIOS_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR & (__INTERRUPT__))
  333. /**
  334. * @brief Enable the MDIOS WAKEUP Exti Line.
  335. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
  336. * This parameter can be:
  337. * @arg MDIOS_WAKEUP_EXTI_LINE
  338. * @retval None.
  339. */
  340. #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__) (EXTI->IMR2 |= (__EXTI_LINE__))
  341. #if defined(DUAL_CORE)
  342. /**
  343. * @brief Enable the MDIOS WAKEUP Exti Line by Domain2.
  344. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
  345. * This parameter can be:
  346. * @arg MDIOS_WAKEUP_EXTI_LINE
  347. * @retval None.
  348. */
  349. #define __HAL_MDIOS_WAKEUP_EXTID2_ENABLE_IT(__EXTI_LINE__) (EXTI->C2IMR2 |= (__EXTI_LINE__))
  350. #endif
  351. /**
  352. * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
  353. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
  354. * This parameter can be:
  355. * @arg MDIOS_WAKEUP_EXTI_LINE
  356. * @retval EXTI MDIOS WAKEUP Line Status.
  357. */
  358. #define __HAL_MDIOS_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR2 & (__EXTI_LINE__))
  359. #if defined(DUAL_CORE)
  360. /**
  361. * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
  362. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
  363. * This parameter can be:
  364. * @arg MDIOS_WAKEUP_EXTI_LINE
  365. * @retval EXTI MDIOS WAKEUP Line Status.
  366. */
  367. #define __HAL_MDIOS_WAKEUP_EXTID2_GET_FLAG(__EXTI_LINE__) (EXTI->C2PR2 & (__EXTI_LINE__))
  368. #endif
  369. /**
  370. * @brief Clear the MDIOS WAKEUP Exti flag.
  371. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
  372. * This parameter can be:
  373. * @arg MDIOS_WAKEUP_EXTI_LINE
  374. * @retval None.
  375. */
  376. #define __HAL_MDIOS_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR2 = (__EXTI_LINE__))
  377. #if defined(DUAL_CORE)
  378. /**
  379. * @brief Clear the MDIOS WAKEUP Exti flag.
  380. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
  381. * This parameter can be:
  382. * @arg MDIOS_WAKEUP_EXTI_LINE
  383. * @retval None.
  384. */
  385. #define __HAL_MDIOS_WAKEUP_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR2 = (__EXTI_LINE__))
  386. #endif
  387. /**
  388. * @brief enable rising edge interrupt on selected EXTI line.
  389. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
  390. * This parameter can be:
  391. * @arg MDIOS_WAKEUP_EXTI_LINE
  392. * @retval None
  393. */
  394. #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR2 &= ~(__EXTI_LINE__)); \
  395. (EXTI->RTSR2 |= (__EXTI_LINE__))
  396. /**
  397. * @brief enable falling edge interrupt on selected EXTI line.
  398. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
  399. * This parameter can be:
  400. * @arg MDIOS_WAKEUP_EXTI_LINE
  401. * @retval None
  402. */
  403. #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 &= ~(__EXTI_LINE__));\
  404. (EXTI->FTSR2 |= (__EXTI_LINE__))
  405. /**
  406. * @brief enable falling edge interrupt on selected EXTI line.
  407. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
  408. * This parameter can be:
  409. * @arg MDIOS_WAKEUP_EXTI_LINE
  410. * @retval None
  411. */
  412. #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 |= (__EXTI_LINE__));\
  413. (EXTI->FTSR2 |= (__EXTI_LINE__))
  414. /**
  415. * @brief Generates a Software interrupt on selected EXTI line.
  416. * @param __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
  417. * This parameter can be:
  418. * @arg MDIOS_WAKEUP_EXTI_LINE
  419. * @retval None
  420. */
  421. #define __HAL_MDIOS_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER2 |= (__EXTI_LINE__))
  422. /**
  423. * @}
  424. */
  425. /* Exported functions --------------------------------------------------------*/
  426. /** @defgroup MDIOS_Exported_Functions MDIOS Exported Functions
  427. * @{
  428. */
  429. /** @addtogroup MDIOS_Exported_Functions_Group1
  430. * @{
  431. */
  432. HAL_StatusTypeDef HAL_MDIOS_Init(MDIOS_HandleTypeDef *hmdios);
  433. HAL_StatusTypeDef HAL_MDIOS_DeInit(MDIOS_HandleTypeDef *hmdios);
  434. void HAL_MDIOS_MspInit(MDIOS_HandleTypeDef *hmdios);
  435. void HAL_MDIOS_MspDeInit(MDIOS_HandleTypeDef *hmdios);
  436. /* Callbacks Register/UnRegister functions ***********************************/
  437. #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
  438. HAL_StatusTypeDef HAL_MDIOS_RegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID, pMDIOS_CallbackTypeDef pCallback);
  439. HAL_StatusTypeDef HAL_MDIOS_UnRegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID);
  440. #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
  441. /**
  442. * @}
  443. */
  444. /** @addtogroup MDIOS_Exported_Functions_Group2
  445. * @{
  446. */
  447. HAL_StatusTypeDef HAL_MDIOS_WriteReg(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum, uint16_t Data);
  448. HAL_StatusTypeDef HAL_MDIOS_ReadReg(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum, uint16_t *pData);
  449. uint32_t HAL_MDIOS_GetWrittenRegAddress(MDIOS_HandleTypeDef *hmdios);
  450. uint32_t HAL_MDIOS_GetReadRegAddress(MDIOS_HandleTypeDef *hmdios);
  451. HAL_StatusTypeDef HAL_MDIOS_ClearWriteRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
  452. HAL_StatusTypeDef HAL_MDIOS_ClearReadRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
  453. HAL_StatusTypeDef HAL_MDIOS_EnableEvents(MDIOS_HandleTypeDef *hmdios);
  454. void HAL_MDIOS_IRQHandler(MDIOS_HandleTypeDef *hmdios);
  455. void HAL_MDIOS_WriteCpltCallback(MDIOS_HandleTypeDef *hmdios);
  456. void HAL_MDIOS_ReadCpltCallback(MDIOS_HandleTypeDef *hmdios);
  457. void HAL_MDIOS_ErrorCallback(MDIOS_HandleTypeDef *hmdios);
  458. void HAL_MDIOS_WakeUpCallback(MDIOS_HandleTypeDef *hmdios);
  459. /**
  460. * @}
  461. */
  462. /** @addtogroup MDIOS_Exported_Functions_Group3
  463. * @{
  464. */
  465. uint32_t HAL_MDIOS_GetError(MDIOS_HandleTypeDef *hmdios);
  466. HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(MDIOS_HandleTypeDef *hmdios);
  467. /**
  468. * @}
  469. */
  470. /**
  471. * @}
  472. */
  473. /* Private types -------------------------------------------------------------*/
  474. /** @defgroup MDIOS_Private_Types MDIOS Private Types
  475. * @{
  476. */
  477. /**
  478. * @}
  479. */
  480. /* Private variables ---------------------------------------------------------*/
  481. /** @defgroup MDIOS_Private_Variables MDIOS Private Variables
  482. * @{
  483. */
  484. /**
  485. * @}
  486. */
  487. /* Private constants ---------------------------------------------------------*/
  488. /** @defgroup MDIOS_Private_Constants MDIOS Private Constants
  489. * @{
  490. */
  491. /**
  492. * @}
  493. */
  494. /* Private macros ------------------------------------------------------------*/
  495. /** @defgroup MDIOS_Private_Macros MDIOS Private Macros
  496. * @{
  497. */
  498. #define IS_MDIOS_PORTADDRESS(__ADDR__) ((__ADDR__) < 32U)
  499. #define IS_MDIOS_REGISTER(__REGISTER__) ((__REGISTER__) < 32U)
  500. #define IS_MDIOS_PREAMBLECHECK(__PREAMBLECHECK__) (((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_ENABLE) || \
  501. ((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_DISABLE))
  502. /**
  503. * @}
  504. */
  505. /* Private functions ---------------------------------------------------------*/
  506. /** @defgroup MDIOS_Private_Functions MDIOS Private Functions
  507. * @{
  508. */
  509. /**
  510. * @}
  511. */
  512. /**
  513. * @}
  514. */
  515. /**
  516. * @}
  517. */
  518. #endif /* MDIOS */
  519. #ifdef __cplusplus
  520. }
  521. #endif
  522. #endif /* STM32H7xx_HAL_MDIOS_H */
  523. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/