📄 main.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 + -