新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種uIP TCP/IP協(xié)議棧在51系列單片機上的實現(xiàn)

一種uIP TCP/IP協(xié)議棧在51系列單片機上的實現(xiàn)

作者: 時間:2011-08-04 來源:網(wǎng)絡 收藏

  添加了必須的模塊,對進行了正確地配置后,需要編寫主程序函數(shù)。針對基于以太網(wǎng)的WEB SERVER應用,主程序在完成初始化后將不停的進行查詢,如果有新數(shù)據(jù)包到達則送uip_input()函數(shù)處理;如果沒有新數(shù)據(jù)包到達則處理定時事件??蚣艽a如下所示:

通過實際的代碼說明棧的主控制循環(huán)。

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

  /*驅(qū)動層初始化*/

  etherdev_init();

  /*IP地址、網(wǎng)關、掩碼設置*/

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

  /*主循環(huán)*/

  while(1)

  {

  /*從網(wǎng)卡讀數(shù)據(jù)*/

  uip_len = etherdev_read();

  /*假如存在數(shù)據(jù)則按處理*/

  if(uip_len > 0)

  {

  /*收到的是IP數(shù)據(jù),調(diào)用uip_input()處理*/

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

  {

  uip_arp_ipin();

  uip_input();

  /*處理完成后,假如uip_buf中有數(shù)據(jù),則調(diào)用etherdev_send 發(fā)送出往*/

  if(uip_len > 0)

  {

  uip_arp_out();

  etherdev_send();

  }

  }

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




評論


相關推薦

技術專區(qū)

關閉