初级会员

- 积分
- 141
- 金钱
- 141
- 注册时间
- 2015-1-10
- 在线时间
- 19 小时
|

楼主 |
发表于 2017-5-4 15:11:45
|
显示全部楼层
[mw_shl_code=c,true]void ENC28J60_ISRHandler(void)
{
u8 status;
u8 packetnum;
u16 temp;
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIE,EIE_INTIE); //1رÕENC28J60μÄ諾ÖÖD¶Ï
status=ENC28J60_Read(EIR); //¶áè¡òÔì«íøÖD¶Ï±êÖ¾¼Ä′æÆ÷
if(status&EIR_PKTIF) //½óêÕμ½êy¾Y,′|àíêy¾Y
{
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_PKTIF); //Çå3yENC28J60μĽóêÕÖD¶Ï±ê־λ
lwip_pkt_handle() ;
}
if(status&EIR_TXIF) //òÔì«íø·¢ËíÖD¶Ï
{
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_TXIF); //Çå3yENC28J60μĽóêÕÖD¶Ï±ê־λ
}
if(status&EIR_RXERIF) //½óêÕ′íÎóÖD¶Ï±ê־λ
{
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_RXERIF);
packetnum=ENC28J60_Read(EPKTCNT);
temp=ENC28J60_Read(ERXRDPTH)<<8; //¶á衸ß×Ö½ú
temp|=ENC28J60_Read(ERXRDPTL); //¶áè¡μí×Ö½ú
temp++;
ENC28J60_Write(ERXRDPTL,temp&0XFF); //ÏèD′èëμí×Ö½ú
ENC28J60_Write(ERXRDPTH,temp>>8); //ÏèD′èëμí×Ö½ú
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_SET,ECON2,ECON2_PKTDEC);
printf("½óêÕ′íÎ󣡽óêÕμ½êy¾Y°ü¸öêy:%d\r\n",packetnum);
}
if(status&EIR_TXERIF) //·¢Ëí′íÎóÖD¶Ï±ê־λ
{
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_TXERIF);
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,ESTAT,ESTAT_LATECOL|ESTAT_TXABRT);
printf("·¢Ëí′íÎó!\r\n");
}
ENC28J60_Write_Op(ENC28J60_BIT_FIELD_SET,EIE,EIE_INTIE); //′ò¿aENC28J60μÄ諾ÖÖD¶Ï
}
//ía2¿ÖD¶ÏÏß1μÄÖD¶Ï·tÎñoˉêy
void EXTI4_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line4); //Çå3yÖD¶ÏÏß41òÆe±ê־λ
while(ENC28J60_INT == 0)
{
ENC28J60_ISRHandler();
}
}[/mw_shl_code]
现在比较怀疑是中断这里的问题,接受数据时是关闭中断的,这样在读取数据的过程中有数据发过来是不是可能就会丢失呢
|
|