79 lines
2.3 KiB
Markdown
79 lines
2.3 KiB
Markdown
1. 配置ETH,使能以太网物理层驱动程序
|
||
2. 使能lwIP,配置相关信息
|
||
3. board.h中按说明操作
|
||
- 开启宏定义
|
||
- board.c添加初始化代码
|
||
```c
|
||
/**
|
||
* @brief ETH MSP Initialization
|
||
* This function configures the hardware resources used in this example
|
||
* @param heth: ETH handle pointer
|
||
* @retval None
|
||
*/
|
||
void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||
if(heth->Instance==ETH)
|
||
{
|
||
/* USER CODE BEGIN ETH_MspInit 0 */
|
||
|
||
/* USER CODE END ETH_MspInit 0 */
|
||
/* Peripheral clock enable */
|
||
__HAL_RCC_ETH_CLK_ENABLE();
|
||
|
||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||
/**ETH GPIO Configuration
|
||
PC1 ------> ETH_MDC
|
||
PA1 ------> ETH_REF_CLK
|
||
PA2 ------> ETH_MDIO
|
||
PA7 ------> ETH_CRS_DV
|
||
PC4 ------> ETH_RXD0
|
||
PC5 ------> ETH_RXD1
|
||
PG11 PB11 ------> ETH_TX_EN
|
||
PG13 PB12 ------> ETH_TXD0
|
||
PG14 PB13 ------> ETH_TXD1
|
||
*/
|
||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
|
||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||
|
||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
|
||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||
|
||
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_13;
|
||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
||
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
|
||
|
||
/* ETH interrupt Init */
|
||
HAL_NVIC_SetPriority(ETH_IRQn, 0, 0);
|
||
HAL_NVIC_EnableIRQ(ETH_IRQn);
|
||
/* USER CODE BEGIN ETH_MspInit 1 */
|
||
|
||
/* USER CODE END ETH_MspInit 1 */
|
||
}
|
||
|
||
}
|
||
|
||
void phy_reset(void)
|
||
{
|
||
rt_pin_mode(RESET_IO, PIN_MODE_OUTPUT);
|
||
rt_pin_write(RESET_IO, PIN_HIGH);
|
||
rt_thread_mdelay(50);
|
||
rt_pin_write(RESET_IO, PIN_LOW);
|
||
rt_thread_mdelay(50);
|
||
rt_pin_write(RESET_IO, PIN_HIGH);
|
||
}
|
||
```
|