新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种uIP TCP/IP协议栈在51系列单片机上的实现

一种uIP TCP/IP协议栈在51系列单片机上的实现

作者:时间:2011-08-04来源:网络收藏

  添加了必须的模块,对进行了正确地配置后,需要编写主程序函数。针对基于以太网的WEB SERVER应用,主程序在完成初始化后将不停的进行查询,如果有新数据包到达则送uip_input()函数处理;如果没有新数据包到达则处理定时事件。框架代码如下所示:

通过实际的代码说明栈的主控制循环。

  void main(void)

  {

  /*省略部分代码*/

  /*设置TCP超时处理时间和ARP老化时间*/

  timer_set(periodic_timer, CLOCK_CONF_SECOND / 2);

  timer_set(arp_timer, CLOCK_CONF_SECOND * 10);

  /*定时器初始化*/

  init_Timer();

  /*栈初始化*/

  uip_init();

  uip_arp_init();

  /*应用层初始化*/

  example1_init();

  /*驱动层初始化*/

  etherdev_init();

  /*IP地址、网关、掩码设置*/

  uip_ipaddr(ipaddr, 192,168,1,9);

  uip_sethostaddr(ipaddr);

  uip_ipaddr(ipaddr, 192,168,1,16);

  uip_setdraddr(ipaddr);

  uip_ipaddr(ipaddr, 255,255,255,0);

  uip_setnetmask(ipaddr);

  /*主循环*/

  while(1)

  {

  /*从网卡读数据*/

  uip_len = etherdev_read();

  /*假如存在数据则按处理*/

  if(uip_len > 0)

  {

  /*收到的是IP数据,调用uip_input()处理*/

  if(BUF->type == htons(UIP_ETHTYPE_IP))

  {

  uip_arp_ipin();

  uip_input();

  /*处理完成后,假如uip_buf中有数据,则调用etherdev_send 发送出往*/

  if(uip_len > 0)

  {

  uip_arp_out();

  etherdev_send();

  }

  }

tcp/ip相关文章:tcp/ip是什么




评论


相关推荐

技术专区

关闭