根据 ENC28J60数据表 , 这好像是 RXSTAT 标志应位于第12位:
RXSTAT
我不确定是否 des_enc28_readOp(ENC28J60_READ_BUF_MEM, 0) 正在读正确的东西,但我相信你应该有这样的东西:
des_enc28_readOp(ENC28J60_READ_BUF_MEM, 0)
unsigned PHSTAT2 = des_enc28_readOp(ENC28J60_READ_BUF_MEM, 0); PHSTAT2 |= des_enc28_readOp(ENC28J60_READ_BUF_MEM, 0) << 8; unsigned RXSTAT = (PHSTAT2 & 0x1000) != 0; if (RXSTAT) { // RXSTAT flag is set des_enc28_readBuffer(packet, len); } else { ... }
我还会将此寄存器的值转储到日志或串行端口,以确保您了解其内容实际是什么:
// I noticed serialprint in your other question, so I am presuming this is your log func serialprint("PHSTAT2 = 0x%04x\n", PHSTAT2);