问题描述:程序出自ST官方的LwIP例程,只是简单的ping,不采用DHCP,IP定义在netconf.c,为192, 168, 2, 30。
采用STM32F107VCT6芯片,去除开发板管脚相关的定义,RMII模式,使用的管脚
PB11 ETH_MII_TX_EN
PB12 ETH_MII_TXD0
PB13 ETH_MII_TXD1
PD9 ETH_MII_RXD0
PD10 ETH_MII_RXD1
PD8 ETH_MII_RX_DV/ETH_RMII_CRS_DV
PC1 ETH_MII_MDC
PA2 ETH_MII_MDIO
PA1 ETH_MII_RX_CLK/ETH_RMII_REF_CLK
在stm32f107.c函数GPIO_Configuration()中,可以把和RMII无关的管脚去除配置,但是问题出现了。PC2和PB8在RMII中并没有用到,如果去除他们的配置,则程序就ping不通,而其他的比如PA0,PA3则没有问题。
程序段如下:
/* Configure PC1, PC2 and PC3 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; //PC2用不到,为什么删除就不能运行了?
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure PB5, PB8, PB11, PB12 and PB13 as alternate function push-pull */ //PB8用不到,为什么删除就不能运行了?
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
附件中是完整的程序,应该在大部分107的板子上都可以无修改运行,编译环境为MDK和IAR。
请版主帮忙,为什么我屏蔽掉PC2和PB8,程序就不能正常运行了呢,我的程序哪儿出问题了呢?。
谢谢!
-
-
STM32F107_ETH_LwIP_RMII.zip (2.82 MB)