首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
一种uIP TCP/IP协议栈在51系列单片机上的实现
来源:本站整理  作者:佚名  2011-08-24 08:02:50



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

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

  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();

  }

  }

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:240,609.40000 毫秒