请教:STM32+enc28j60+uip PING通 但是测试UDP收发数据不通
写了一个基于uip的UDP收发数据的测试程序,其功能是:目标板接收到PC发来的以太网数据后返回接收到的数据给PC,可以PING通,但是收发不了数据,不知道是不是uip的配置弄错,还是其它什么原因,大家帮帮忙。UDP 初始化 和UDP回调函数如下(不知道是不是这样写):
u8_t data_buf[200]={0},data_len=0,rec_ok_flag=0;
static struct uip_udp_conn *conn_tftp=NULL;
void example1_init(void)
{
//uip_listen(HTONS(1234)); //TCP
u16_t any[2];
//远程IP为192.168.1.200
uip_ipaddr(any, 192, 168, 1, 200);
if(conn_tftp != NULL)
{
uip_udp_remove(conn_tftp);//如果连接已经建立,则删除之
}
conn_tftp = uip_udp_new(any, HTONS(1000)); //建立到远程ipaddr,端口为1000的连接
if(conn_tftp != NULL)
{
//绑定本地端口为 1000
conn_tftp->lport = HTONS(1000);
}
}
void example1_app(void)
{
unsigned char i ;
u8_t cmd_data[8]={0x55,0x06,0x2B,0x00,0x00,0x00,0x00,0x87};
if(uip_connected())
{
uip_send("UART TO LAN V0.1\n",17);
}
if(uip_newdata() || uip_rexmit() )
{
for(i=0;i<uip_datalen();i++)
{
data_buf[i]=*uip_appdata++;
}
data_len=uip_datalen();
rec_ok_flag=1;
}
if (uip_poll())
{
if (rec_ok_flag)
{
uip_send(data_buf, data_len);
rec_ok_flag=0;
}
else
{
uip_send(cmd_data, 8);
}
}
}
void tcp_appcall(void)
{
}
小弟刚接触以太网不是很懂,不知道UIP哪里配置错,知道原因的朋友帮帮忙,谢谢!附上代码,帮忙看看 |