您还!
本网站分享的工程GE(参考附件)的GE_Test.c的Port_OK函数的108、109行代码是否有问题?
if((gpMDIO_regs->CONTROL_REG&CSL_MDIO_CONTROL_REG_ENABLE_MASK)
&&(0==gpMDIO_regs->LINK_REG&(1<<uiPortNum))) //109行
{
printf("link PHY%d is NOT up\n", uiPortNum);
return FALSE;
}
但是将红色部分修改成 0==(gpMDIO_regs->LINK_REG&(1<<uiPortNum))
后,又经常性的显示网络端口不能发送数据,输出 link PHY1 is NOT up。
请问该如何理解这个函数?谢谢!
Allen35065:
MDIO口的LINK状态位是PHY芯片相关的,PHY状态不对,LINK位就不对;
没必要加括号,&操作符优先级高于==。
xinrong long:
回复 Allen35065:
您好!
按位与(&)运算符优先级是低于等于 == 运算符的,只有作为地址运算符,其优先级才是高于等于运算符的。
Allen35065:
回复 xinrong long:
嗯,你说的对,LINK位一般和PHY的状态相关,DSP侧只是通过其检测PHY是否正常工作。
L G2:
您好,我最近也在使用GE例程调试以太网,可否留个联系方式,请教你一些问题。