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

📄 main.c

📁 STR912 arm9实现的以太网通信程序
💻 C
字号:
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : main.c
* Author             : MCD Application Team
* Version            : V2.0
* Date               : 12/07/2007
* Description        : ENET example  
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "91x_lib.h"
#include "hw_config.h"
#include "udp.h"


/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/


/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/

extern struct uip_udp_conn *uip_udp_conn;

extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];

extern u8_t uip_buf[UIP_BUFSIZE+2];

extern volatile u8_t *uip_appdata;

extern u16_t uip_len, uip_slen;

volatile unsigned char flg_arptimer=0;
/* Private function prototypes -----------------------------------------------*/
void TransmitPacket(void);
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name  : main
* Description    : Main program
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
int main()
{
#ifdef DEBUG
    debug();
#endif
  u16_t testipaddr[2] =
	{HTONS((UIP_TESTIPADDR0<< 8) | UIP_TESTIPADDR1),
	HTONS((UIP_TESTIPADDR2<< 8) | UIP_TESTIPADDR3)};
  u32 size;
  u8_t i;
  struct uip_eth_hdr *BUF = (struct uip_eth_hdr*)uip_buf; 

  Set_System(); 
   
  udp_init();
 // uip_listen(HTONS(2000));
//uip_udp_conns[1]={168<<8|198,8<<8|0,2000,2000};

 	uip_udp_new(testipaddr,2000) ;
  while(1)
  {
  	 size = ENET_HandleRxPkt(uip_buf);
      uip_len = size;

      if(uip_len > 0x0)
	  {
     	   if(BUF->type == htons(UIP_ETHTYPE_IP))
     	   {
		      uip_arp_ipin();
              udp_process();

 	 	  	  if(uip_len > 0)
      	      {
	  	 	     uip_arp_out();
           	     TransmitPacket();
	   		  }
      	   }
           else if(BUF->type == htons(UIP_ETHTYPE_ARP))
           {
	    	   uip_arp_arpin();

	    	   if(uip_len > 0)
      	       {
        	      TransmitPacket();
		       }
    	   }
   	   }
	     
	  else 
	  	{
	  		for(i = 0; i < UIP_UDP_CONNS; i++)
      		{
				uip_udp_conn = &uip_udp_conns[i];
		    	uip_udp_periodic();
				if(uip_len > 0)
        		{
	  		   		uip_arp_out();
               		TransmitPacket();
	  			}
	    	}
      	}

     if(flg_arptimer)
     {	
	 	  flg_arptimer = 0;
          uip_arp_timer();
     }
  }
}

void TransmitPacket(void)
{
      int i;
      u8 data[1500];

      for(i = 0; i < uip_len; ++i) {
          data[i] =  uip_buf[i];
      }
      ENET_HandleTxPkt(&data,uip_len);
}


void udp_appcall(void)
{
    //int i;
	//u8 send[] = "udp received";
	//uip_slen = strlen(send);
	//	for(i=0;i<uip_slen;i++)
	//	{
	//		uip_buf[UIP_LLH_LEN + 28 + i]=send[i];
	//	}

			UDPDATA[0] = 'U';	
			UDPDATA[1] = 'D';	
			UDPDATA[2] = 'P';	
			UDPDATA[3] = ' ';	
			UDPDATA[4] = 'R';	
			UDPDATA[5] = 'E';	
			UDPDATA[6] = 'C';	
			UDPDATA[7] = 'E';
			UDPDATA[8] = 'I';
			UDPDATA[9] = 'V';
			UDPDATA[10] = 'E';	
			uip_slen=11;
}

⌨️ 快捷键说明

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