⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lwip_main.c

📁 网络服务器上实现操作系统和嵌入式协议栈的 结合
💻 C
字号:
#include "std.h"
#include "HW_Periph.h"
#include "HW_func.h"
#include "sysconf.h"

#include "lwip/opt.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/sys.h"
#include "lwip/stats.h"
#include "lwip/tcpip.h"
#include "netif/loopif.h"
#include "netif/eth4510if.h"
#include "lwip/ip_addr.h"
#include "lwip/debug.h"

//#include "tcpecho.h"
//#include "udpecho.h"

/*dy's debug*/
#include "snds.h"
/*dy's debug*/


extern OS_EVENT	*ConsoleSem;

/*-----------------------------------------------------------------------------------*/
static void
tcpip_init_done(void *arg)
{
  sys_sem_t *sem;
  sem = arg;
  sys_sem_signal(*sem);
}
/*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/
void LWIP_main(void *arg)
{
u8_t	err;
  struct ip_addr ipaddr, netmask, gw;
  sys_sem_t sem;

#ifdef STATS
  stats_init();
#endif /* STATS */


  sys_init();
  mem_init();
  memp_init();
  pbuf_init();

	OSSemPend(ConsoleSem,0,&err);
	Print("==================System initialized.==================\r\n");
	OSSemPost(ConsoleSem);
	
  

  netif_init();
  sem = sys_sem_new(0);
  tcpip_init(tcpip_init_done, &sem);
  sys_sem_wait(sem);
  sys_sem_free(sem);


	OSSemPend(ConsoleSem,0,&err);
  	Print("==================TCP/IP initialized.==================\r\n");
  	OSSemPost(ConsoleSem);

#if LWIP_DHCP
  {
    struct netif *netif;
    IP4_ADDR(&gw, 0,0,0,0);
    IP4_ADDR(&ipaddr, 0,0,0,0);
    IP4_ADDR(&netmask, 0,0,0,0);

    netif = netif_add(&ipaddr, &netmask, &gw, ethernetif_init,
		      tcpip_input);
    netif_set_default(netif);
    dhcp_init();
    dhcp_start(netif);
  }
#else
//  IP4_ADDR(&gw, 192,168,0,1);
//  IP4_ADDR(&ipaddr, 192,168,0,111);
//  IP4_ADDR(&netmask, 255,255,255,0);
  IP4_ADDR(&gw, 10,0,0,2);
  IP4_ADDR(&ipaddr, 10,0,0,20);
  IP4_ADDR(&netmask, 255,255,255,0);
  
  netif_set_default(netif_add(&ipaddr, &netmask, &gw, NULL, ethernetif_init,tcpip_input));

    
    
	OSSemPend(ConsoleSem,0,&err);
  	Print("==============Net Interface Attached==============\r\n");
  	Print("==================10.0.0.20===================\r\n");
  	OSSemPost(ConsoleSem);


#endif
  
  IP4_ADDR(&gw, 127,0,0,1);
  IP4_ADDR(&ipaddr, 127,0,0,1);
  IP4_ADDR(&netmask, 255,0,0,0);
  
  netif_add(&ipaddr, &netmask, &gw, NULL,loopif_init,tcpip_input);

	OSSemPend(ConsoleSem,0,&err);
  	Print("==============Net Interface Attached==============\r\n");
  	Print("==================127.0.0.1===================\r\n");
  	OSSemPost(ConsoleSem);

 
/* tcpecho_init();
  shell_init();
  httpd_init();
  udpecho_init();*/
 
//这里便是应用程序的创建过程




	while(1)
	{
	OSTimeDly(OS_TICKS_PER_SEC);//block every minite

/*dy's debug*/
	IOPDATA= IOPDATA&0x40 ? IOPDATA &(~0x40) : IOPDATA |0x40;
/*dy's debug*/

	}


}
/*-----------------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -