新手入门 
 
	- 积分
 - 27
 
        - 金钱
 - 27 
 
       - 注册时间
 - 2015-1-10
 
      - 在线时间
 - 0 小时
 
 
 
 | 
 
5金钱 
程序初始化后可以进入 
//以太网DMA接收中断服务函数 
void ETH_IRQHandler(void) 
{ 
while(ETH_GetRxPktSize(DMARxDescToGet)!=0) 	//检测是否收到数据包 
{  
lwip_pkt_handle();  
} 
ETH_DMAClearITPendingBit(ETH_DMA_IT_R); 	//清除DMA中断标志位 
ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);	//清除DMA接收中断标志位 
}   
 
 
但是运行到这里时 
 
//网卡接收数据(lwip直接调用) 
//netif:网卡结构体指针 
//返回值:ERR_OK,发送正常 
//       ERR_MEM,发送失败 
err_t ethernetif_input(struct netif *netif) 
{ 
err_t err; 
struct pbuf *p; 
p=low_level_input(netif);   //调用low_level_input函数接收数据 
if(p==NULL) return ERR_MEM; 
err=netif->input(p, netif); //调用netif结构体中的input字段(一个函数)来处理数据包 
if(err!=ERR_OK) 
{ 
LWIP_DEBUGF(NETIF_DEBUG,("ethernetif_input: IP input error\n")); 
pbuf_free(p); 
p = NULL; 
}  
return err; 
}  
 
 
err=netif->input(p, netif); //调用netif结构体中的input字段(一个函数)来处理数据包 
这一句就会进入硬件中断 每次都是  
我调试发现 到之一步时netif的地址为0X2001AC1C     指针的地址为0X2000CA08 
这不是说明结构体分的有地址吗 为啥还会跑飞呢? 
 
 
 
 
  |   
 
 
 
 
 
 |