1
+ #include "stm32f4xx_hal.h"
2
+
3
+ /**
4
+ * Override HAL Eth Init function
5
+ */
6
+ void HAL_ETH_MspInit (ETH_HandleTypeDef * heth )
7
+ {
8
+ GPIO_InitTypeDef GPIO_InitStructure ;
9
+ if (heth -> Instance == ETH ) {
10
+
11
+ /* Enable GPIOs clocks */
12
+ __HAL_RCC_GPIOA_CLK_ENABLE ();
13
+ __HAL_RCC_GPIOB_CLK_ENABLE ();
14
+ __HAL_RCC_GPIOC_CLK_ENABLE ();
15
+
16
+ /** ETH GPIO Configuration
17
+ RMII_REF_CLK ----------------------> PA1
18
+ RMII_MDIO -------------------------> PA2
19
+ RMII_MDC --------------------------> PC1
20
+ RMII_MII_CRS_DV -------------------> PA7
21
+ RMII_MII_RXD0 ---------------------> PC4
22
+ RMII_MII_RXD1 ---------------------> PC5
23
+ RMII_MII_RXER ---------------------> PG2
24
+ RMII_MII_TX_EN --------------------> PB11
25
+ RMII_MII_TXD0 ---------------------> PB12
26
+ RMII_MII_TXD1 ---------------------> PB13
27
+ */
28
+ /* Configure PA1, PA2 and PA7 */
29
+ GPIO_InitStructure .Speed = GPIO_SPEED_HIGH ;
30
+ GPIO_InitStructure .Mode = GPIO_MODE_AF_PP ;
31
+ GPIO_InitStructure .Pull = GPIO_PULLUP ;
32
+ GPIO_InitStructure .Pin = GPIO_PIN_2 | GPIO_PIN_7 ;
33
+ GPIO_InitStructure .Alternate = GPIO_AF11_ETH ;
34
+ HAL_GPIO_Init (GPIOA , & GPIO_InitStructure );
35
+
36
+ GPIO_InitStructure .Pull = GPIO_NOPULL ;
37
+ GPIO_InitStructure .Pin = GPIO_PIN_1 ;
38
+ HAL_GPIO_Init (GPIOA , & GPIO_InitStructure );
39
+
40
+ /* Configure PB13 */
41
+ GPIO_InitStructure .Pin = GPIO_PIN_13 | GPIO_PIN_11 | GPIO_PIN_12 ;
42
+ HAL_GPIO_Init (GPIOB , & GPIO_InitStructure );
43
+
44
+ /* Configure PC1, PC4 and PC5 */
45
+ GPIO_InitStructure .Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 ;
46
+ HAL_GPIO_Init (GPIOC , & GPIO_InitStructure );
47
+
48
+
49
+ /* Enable the Ethernet global Interrupt */
50
+ HAL_NVIC_SetPriority (ETH_IRQn , 0x7 , 0 );
51
+ HAL_NVIC_EnableIRQ (ETH_IRQn );
52
+
53
+ /* Enable ETHERNET clock */
54
+ __HAL_RCC_ETH_CLK_ENABLE ();
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Override HAL Eth DeInit function
60
+ */
61
+ void HAL_ETH_MspDeInit (ETH_HandleTypeDef * heth )
62
+ {
63
+ if (heth -> Instance == ETH ) {
64
+ /* Peripheral clock disable */
65
+ __HAL_RCC_ETH_CLK_DISABLE ();
66
+
67
+ /** ETH GPIO Configuration
68
+ RMII_REF_CLK ----------------------> PA1
69
+ RMII_MDIO -------------------------> PA2
70
+ RMII_MDC --------------------------> PC1
71
+ RMII_MII_CRS_DV -------------------> PA7
72
+ RMII_MII_RXD0 ---------------------> PC4
73
+ RMII_MII_RXD1 ---------------------> PC5
74
+ RMII_MII_RXER ---------------------> PG2
75
+ RMII_MII_TX_EN --------------------> PB11
76
+ RMII_MII_TXD0 ---------------------> PB12
77
+ RMII_MII_TXD1 ---------------------> PB13
78
+ */
79
+ HAL_GPIO_DeInit (GPIOA , GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7 );
80
+ HAL_GPIO_DeInit (GPIOB , GPIO_PIN_13 | GPIO_PIN_11 | GPIO_PIN_12 );
81
+ HAL_GPIO_DeInit (GPIOC , GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 );
82
+
83
+ /* Disable the Ethernet global Interrupt */
84
+ NVIC_DisableIRQ (ETH_IRQn );
85
+ }
86
+ }
0 commit comments