使用LAN8720,STM32F4程序初始化出问题,求助,谢谢!

2019-07-20 22:39发布

我用STM32F4及LAN8720按照原子的电路,自己画的电路板,用例程《网络通信实验》的TCP Client测试程序,在学习班上云行正常,在我的板上运行,程序运行到:“ while (ETH_GetSoftwareResetStatus() == SET);//等待软件重启网络完成 ”出现死循环,不知什么原因,请大师指点。谢谢。下面是原子的例程程序。

u8 ETH_MACDMA_Config(void)
{
 u8 rval;
 ETH_InitTypeDef ETH_InitStructure;
 
 //使能以太网时钟
 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC | RCC_AHB1Periph_ETH_MAC_Tx |RCC_AHB1Periph_ETH_MAC_Rx, ENABLE);
                       
 ETH_DeInit();          //AHB总线重启以太网
 ETH_SoftwareReset();        //软件重启网络
 while (ETH_GetSoftwareResetStatus() == SET);//等待软件重启网络完成   !!这里出问题了
 ETH_StructInit(&ETH_InitStructure);    //初始化网络为默认值 

FlagStatus ETH_GetSoftwareResetStatus(void)
{
  FlagStatus bitstatus = RESET;
  if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
taizonglai
1楼-- · 2019-07-20 23:28
怎么又是这种问题,好多人都在自己做的板子上遇到中遇到这个问题,检查一下硬件电路,看一下LAN8720有没有输出50M的时钟
nitxyq
2楼-- · 2019-07-21 04:22
有输出50M的时钟
augustedward
3楼-- · 2019-07-21 06:12
 精彩回答 2  元偷偷看……
nitxyq
4楼-- · 2019-07-21 09:37
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 11:18
回复【5楼】nitxyq:
---------------------------------
查电路,查代码.
慢慢折腾.
65993366
6楼-- · 2019-07-21 16:21
hello  lz你解决了吗?
我也是同样的问题
地已经焊上了,有滴滴声

这句RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC | RCC_AHB1Periph_ETH_MAC_Tx |RCC_AHB1Periph_ETH_MAC_Rx, ENABLE)执行后
ETH->DMABMR 的值是0x20101
而在原子的开发板上   这个寄存器的值是0x20100

而且我连50M的时钟输出也没有。REF_CLK引脚是3V3

一周热门 更多>