我用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(Ð_InitStructure); //初始化网络为默认值
FlagStatus ETH_GetSoftwareResetStatus(void)
{
FlagStatus bitstatus = RESET;
if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
return bitstatus;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
查电路,查代码.
慢慢折腾.
我也是同样的问题
地已经焊上了,有滴滴声
这句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
一周热门 更多>