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.
 
 
 

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