高级会员

- 积分
- 695
- 金钱
- 695
- 注册时间
- 2015-9-23
- 在线时间
- 120 小时
|
10金钱
hello , 各位大佬好:
在网络通信实验中,了解到 RMII 接口有 TXD0 TXD1 , RXD0 , RXD1 。 STM32 有发送引脚,有接收引脚。可是在代码中,ETH RMII 相关引脚全部设置成了推挽输出,不是应该将RXD 设置为输入吗 ?
- //ETH底层驱动,时钟使能,引脚配置
- //此函数会被HAL_ETH_Init()调用
- //heth:以太网句柄
- void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
- {
- GPIO_InitTypeDef GPIO_Initure;
-
- __HAL_RCC_ETH_CLK_ENABLE(); //开启ETH时钟
- __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
- __HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟
- __HAL_RCC_GPIOC_CLK_ENABLE(); //开启GPIOC时钟
- __HAL_RCC_GPIOG_CLK_ENABLE(); //开启GPIOG时钟
-
- /*网络引脚设置 RMII接口
- ETH_MDIO -------------------------> PA2
- ETH_MDC --------------------------> PC1
- ETH_RMII_REF_CLK------------------> PA1
- ETH_RMII_CRS_DV ------------------> PA7
- ETH_RMII_RXD0 --------------------> PC4
- ETH_RMII_RXD1 --------------------> PC5
- ETH_RMII_TX_EN -------------------> PB11
- ETH_RMII_TXD0 --------------------> PG13
- ETH_RMII_TXD1 --------------------> PG14
- ETH_RESET-------------------------> PCF8574扩展IO*/
-
- //PA1,2,7
- GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
- GPIO_Initure.Mode=GPIO_MODE_AF_PP; //推挽复用
- GPIO_Initure.Pull=GPIO_NOPULL; //不带上下拉
- GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
- GPIO_Initure.Alternate=GPIO_AF11_ETH; //复用为ETH功能
- HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化
-
- //PB11
- GPIO_Initure.Pin=GPIO_PIN_11; //PB11
- HAL_GPIO_Init(GPIOB,&GPIO_Initure); //始化
-
- //PC1,4,5
- GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; //PC1,4,5
- HAL_GPIO_Init(GPIOC,&GPIO_Initure); //初始化
-
- //PG13,14
- GPIO_Initure.Pin=GPIO_PIN_13|GPIO_PIN_14; //PG13,14
- HAL_GPIO_Init(GPIOG,&GPIO_Initure); //初始化
-
- HAL_NVIC_SetPriority(ETH_IRQn,1,0); //网络中断优先级应该高一点
- HAL_NVIC_EnableIRQ(ETH_IRQn);
- }
复制代码
|
|