发 帖  
原厂入驻New
[问答] 为什么STM32F107 LWIP RMII去掉映射后跑不起来了?
64 LwIP 代码
分享
第一次发帖,求助原子哥,以及论坛的各位大神帮忙下。我使用STM32107VCT6的板子,调试LWIP,在使用RMII的映射功能时,程序能跑,但是去掉映射功能后,就跑不起来了,怎么解决?PB11    ETH_MII_TX_EN
PB12    ETH_MII_TXD0
PB13    ETH_MII_TXD1
PD9     ETH_MII_RXD0---------------------------->改成 PC4
PD10   ETH_MII_RXD1---------------------------->改成 PC5
PD8     ETH_MII_RX_DV/ETH_RMII_CRS_DV------>改成 PA7
PC1     ETH_MII_MDC
PA2     ETH_MII_MDIO
PA1     ETH_MII_RX_CLK/ETH_RMII_REF_CLK(模块的晶振已经去掉了)
PA8     MCO
我修改前代码如下:
[C] 纯文本查看 复制代码
void GPIO_Configuration(void){  GPIO_InitTypeDef GPIO_InitStructure;  /* ETHERNET pins configuration */  /* AF Output Push Pull:  - ETH_MII_MDIO / ETH_RMII_MDIO: PA2  - ETH_MII_MDC / ETH_RMII_MDC: PC1  - ETH_MII_TXD2: pc2  - ETH_MII_TX_EN / ETH_RMII_TX_EN: PB11  - ETH_MII_TXD0 / ETH_RMII_TXD0: PB12  - ETH_MII_TXD1 / ETH_RMII_TXD1: PB13  - ETH_MII_PPS_OUT / ETH_RMII_PPS_OUT: PB5  - ETH_MII_TXD3: PB8 */  /* Configure PA2 as alternate function push-pull */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_Init(GPIOA, &GPIO_InitStructure);  /* Configure PC1, PC2 and PC3 as alternate function push-pull */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;  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 */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | 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);  /**************************************************************/  /*               For Remapped Ethernet pins                   */  /*************************************************************/  /* Input (Reset Value):  - ETH_MII_CRS CRS: PA0  - ETH_MII_RX_CLK / ETH_RMII_REF_CLK: PA1  - ETH_MII_COL: PA3  - ETH_MII_RX_DV / ETH_RMII_CRS_DV: PD8  - ETH_MII_TX_CLK: PC3  - ETH_MII_RXD0 / ETH_RMII_RXD0: PD9  - ETH_MII_RXD1 / ETH_RMII_RXD1: PD10  - ETH_MII_RXD2: PD11  - ETH_MII_RXD3: PD12  - ETH_MII_RX_ER: PB10 */  /* ETHERNET pins remapp in STM3210C-EVAL board: RX_DV and RxD[3:0] */  GPIO_PinRemapConfig(GPIO_Remap_ETH, ENABLE);  /* Configure PA0, PA1 and PA3 as input */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  GPIO_Init(GPIOA, &GPIO_InitStructure);  /* Configure PB10 as input */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  GPIO_Init(GPIOB, &GPIO_InitStructure);  /* Configure PC3 as input */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  GPIO_Init(GPIOC, &GPIO_InitStructure);  /* Configure PD8, PD9, PD10, PD11 and PD12 as input */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  GPIO_Init(GPIOD, &GPIO_InitStructure); /**/  /* ADC Channel14 config --------------------------------------------------------*/  /* Relative to STM3210D-EVAL Board   */  /* Configure PC.04 (ADC Channel14) as analog input -------------------------*/  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  GPIO_Init(GPIOC, &GPIO_InitStructure);  /* MCO pin configuration------------------------------------------------- */  /* Configure MCO (PA8) as alternate function push-pull */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_Init(GPIOA, &GPIO_InitStructure);}
我修改后如下:
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  /* ETHERNET pins configuration */
  /* AF Output Push Pull:
  - ETH_MII_MDIO / ETH_RMII_MDIO: PA2
  - ETH_MII_MDC / ETH_RMII_MDC: PC1
  - ETH_MII_TXD2: PC2
  - ETH_MII_TX_EN / ETH_RMII_TX_EN: PB11
  - ETH_MII_TXD0 / ETH_RMII_TXD0: PB12
  - ETH_MII_TXD1 / ETH_RMII_TXD1: PB13
  - ETH_MII_PPS_OUT / ETH_RMII_PPS_OUT: PB5
  - ETH_MII_TXD3: PB8 */
  /* Configure PA2 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* Configure PC1, PC2 and PC3 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
  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 */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | 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);
  /**************************************************************/
  /*               For Remapped Ethernet pins                   */
  /*************************************************************/
  /* Input (Reset Value):
  - ETH_MII_CRS CRS: PA0
  - ETH_MII_RX_CLK / ETH_RMII_REF_CLK: PA1
  - ETH_MII_COL: PA3
  - ETH_MII_RX_DV / ETH_RMII_CRS_DV: PD8
  - ETH_MII_TX_CLK: PC3
  - ETH_MII_RXD0 / ETH_RMII_RXD0: PD9
  - ETH_MII_RXD1 / ETH_RMII_RXD1: PD10
  - ETH_MII_RXD2: PD11
  - ETH_MII_RXD3: PD12
  - ETH_MII_RX_ER: PB10 */
  /* ETHERNET pins remapp in STM3210C-EVAL board: RX_DV and RxD[3:0] */
  //GPIO_PinRemapConfig(GPIO_Remap_ETH, ENABLE);
  //默认PD8->PA7
  /* Configure PA0, PA1 and PA3 as input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3| GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* Configure PB10 as input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  //默认PD9 PD10 ->PC4 PC5
  /* Configure PC3 as input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  //关闭PD8 PD9 PD10 的映射功能
  /* Configure PD8, PD9, PD10, PD11 and PD12 as input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOD, &GPIO_InitStructure); /**/
  /* ADC Channel14 config --------------------------------------------------------*/
  /* Relative to STM3210D-EVAL Board   */
  /* Configure PC.04 (ADC Channel14) as analog input -------------------------*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  /* MCO pin configuration------------------------------------------------- */
  /* Configure MCO (PA8) as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}
0
2019-11-11 04:32:54   评论 分享淘帖 邀请回答

相关问题

16个回答
原子哥会么?我用的DP83848的模块,某宝买的,用的也是STM32F107的核心板,同样是某宝买的,因为官网的LWIP使用了映射,占用了一个串口,导致我串口不够用了,所以想去掉LWIP的映射功能,可是一去掉就不行了,以太网的灯还是照常亮,可是程序初始化就是不成功,网上找了好多,全是求助帖,没一个解决的~~郁闷死了!!
2019-11-11 06:57:42 评论

举报

http://www.openedv.com/thread-79137-1-1.html
2019-11-11 07:08:37 评论

举报

工程下载地址 ,这里不知道怎么回事,上传不了,链接:http://pan.baidu.com/s/1qY1UFCw 密码:slbc
2019-11-11 07:19:55 评论

举报

原子哥会么?我用的DP83848的模块,某宝买的,用的也是STM32F107的核心板,同样是某宝买的,因为官网的LWIP使用了映射,占用了一个串口,导致我串口不够用了,所以想去掉LWIP的映射功能,可是一去掉就不行了,以太网的灯还是照常亮,可是程序初始化就是不成功,网上找了好多,全是求助帖,没一个解决的~~郁闷死了!!
2019-11-11 07:52:55 评论

举报

2019-11-11 08:04:25 评论

举报

没事了,已经解决了,将代码中的ADC相关的代码去掉,然后将部分不相关的IO初始化代码也去掉,就好了,我的代码因为是参考金龙开发板的。
2019-11-11 08:16:48 评论

举报

你好,我这边也遇到了这样的情况。我自己做了个板子,用的是PC4、PC5,代码参考的也是金龙的,按照你说的方法试了也不行,求指教!
2019-11-11 08:35:46 评论

举报

将金龙的代码里面与LWIP无关的代码都删除掉,就可以用了,什么ADC的,和一些无关的IO初始化,然后只要去掉金龙代码里面的端口映射,以及修改下初始化IO,就OK了。主要还是那个ADC代码影响了程序
2019-11-11 08:46:15 评论

举报

你好,方便加个QQ吗,3249779034,谢了啊
2019-11-11 08:51:29 评论

举报

这里有个根据金龙的程序改的STM32F107.C的代码,有2个,一个是带映射的,一个是不带映射的,具体哪个是映射的,哪个不是映射的,你看下代码吧,我也忘记了stm32f107.zip (6.57 KB )
2019-11-11 09:05:29 评论

举报

按照你说的实现了。但是为什么用PC4、PC5的时候,一定要把PD8改为PA7?
2019-11-11 09:11:18 评论

举报

我用的是2个板子,板子上这个接口有点不一样
2019-11-11 09:18:49 评论

举报

我自己画的板子是PD8,死活不行,不知道为啥啊
2019-11-11 09:36:17 评论

举报

去看下数据手册中对于端口映射的说明,可能是PD8也做了映射,不记得了~~
2019-11-11 09:43:28 评论

举报

2019-11-11 09:53:47 评论

举报

只有小组成员才能发言,加入小组>>

55个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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