OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7134|回复: 1

STM32F4 ETH 引脚状态全部为 推挽输出?

[复制链接]

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
发表于 2022-11-30 10:14:54 | 显示全部楼层 |阅读模式
10金钱
hello , 各位大佬好:
在网络通信实验中,了解到 RMII 接口有 TXD0 TXD1 , RXD0 , RXD1 。 STM32 有发送引脚,有接收引脚。可是在代码中,ETH RMII 相关引脚全部设置成了推挽输出,不是应该将RXD 设置为输入吗 ?
  1. //ETH底层驱动,时钟使能,引脚配置
  2. //此函数会被HAL_ETH_Init()调用
  3. //heth:以太网句柄
  4. void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
  5. {
  6.     GPIO_InitTypeDef GPIO_Initure;
  7.    
  8.     __HAL_RCC_ETH_CLK_ENABLE();             //开启ETH时钟
  9.     __HAL_RCC_GPIOA_CLK_ENABLE();                        //开启GPIOA时钟
  10.         __HAL_RCC_GPIOB_CLK_ENABLE();                        //开启GPIOB时钟
  11.     __HAL_RCC_GPIOC_CLK_ENABLE();                        //开启GPIOC时钟
  12.     __HAL_RCC_GPIOG_CLK_ENABLE();                        //开启GPIOG时钟
  13.    
  14.     /*网络引脚设置 RMII接口
  15.     ETH_MDIO -------------------------> PA2
  16.     ETH_MDC --------------------------> PC1
  17.     ETH_RMII_REF_CLK------------------> PA1
  18.     ETH_RMII_CRS_DV ------------------> PA7
  19.     ETH_RMII_RXD0 --------------------> PC4
  20.     ETH_RMII_RXD1 --------------------> PC5
  21.     ETH_RMII_TX_EN -------------------> PB11
  22.     ETH_RMII_TXD0 --------------------> PG13
  23.     ETH_RMII_TXD1 --------------------> PG14
  24.     ETH_RESET-------------------------> PCF8574扩展IO*/
  25.    
  26.     //PA1,2,7
  27.     GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
  28.     GPIO_Initure.Mode=GPIO_MODE_AF_PP;          //推挽复用
  29.     GPIO_Initure.Pull=GPIO_NOPULL;              //不带上下拉
  30.     GPIO_Initure.Speed=GPIO_SPEED_HIGH;         //高速
  31.     GPIO_Initure.Alternate=GPIO_AF11_ETH;       //复用为ETH功能
  32.     HAL_GPIO_Init(GPIOA,&GPIO_Initure);         //初始化
  33.    
  34.     //PB11
  35.     GPIO_Initure.Pin=GPIO_PIN_11;               //PB11
  36.     HAL_GPIO_Init(GPIOB,&GPIO_Initure);         //始化
  37.    
  38.     //PC1,4,5
  39.     GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; //PC1,4,5
  40.     HAL_GPIO_Init(GPIOC,&GPIO_Initure);         //初始化
  41.        
  42.     //PG13,14
  43.     GPIO_Initure.Pin=GPIO_PIN_13|GPIO_PIN_14;   //PG13,14
  44.     HAL_GPIO_Init(GPIOG,&GPIO_Initure);         //初始化
  45.    
  46.     HAL_NVIC_SetPriority(ETH_IRQn,1,0);         //网络中断优先级应该高一点
  47.     HAL_NVIC_EnableIRQ(ETH_IRQn);
  48. }
复制代码

最佳答案

查看完整内容[请看2#楼]

已经解决。IO 的模式分为:推挽输出和复用推挽。 复用推挽的时候,可以读取到状态。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
 楼主| 发表于 2022-11-30 10:14:55 | 显示全部楼层
已经解决。IO 的模式分为:推挽输出和复用推挽。 复用推挽的时候,可以读取到状态。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 22:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表