在线时间285 小时
UID3419421
注册时间2017-8-30
NXP金币0
该用户从未签到
高级会员
- 积分
- 750
- 最后登录
- 2021-1-25
|
楼主 |
发表于 2017-10-9 16:17:50
|
显示全部楼层
基于SDK_2.2_LPC54608J512\boards\lpcxpresso54608\demo_apps\lwip\lwip_udpecho这个例子修改
1.main函数修改如下:红色为修改部分
int main(void)
{
struct netif fsl_netif0;
ip4_addr_t fsl_netif0_ipaddr, fsl_netif0_netmask, fsl_netif0_gw;
CLOCK_EnableClock(kCLOCK_InputMux);
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
BOARD_InitPins();
BOARD_BootClockFROHF48M();
BOARD_InitDebugConsole();
time_init();
IP4_ADDR(&fsl_netif0_ipaddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3);
IP4_ADDR(&fsl_netif0_netmask, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3);
IP4_ADDR(&fsl_netif0_gw, configGW_ADDR0, configGW_ADDR1, configGW_ADDR2, configGW_ADDR3);
lwip_init();
netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init,ethernet_input);
netif_set_default(&fsl_netif0);
netif_set_up(&fsl_netif0);
udpecho_raw_init();
PRINTF("\r\n************************************************\r\n");
PRINTF(" UDP Echo example\r\n");
PRINTF("************************************************\r\n");
PRINTF(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&fsl_netif0_ipaddr)[0], ((u8_t *)&fsl_netif0_ipaddr)[1],
((u8_t *)&fsl_netif0_ipaddr)[2], ((u8_t *)&fsl_netif0_ipaddr)[3]);
PRINTF(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&fsl_netif0_netmask)[0], ((u8_t *)&fsl_netif0_netmask)[1],
((u8_t *)&fsl_netif0_netmask)[2], ((u8_t *)&fsl_netif0_netmask)[3]);
PRINTF(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&fsl_netif0_gw)[0], ((u8_t *)&fsl_netif0_gw)[1],
((u8_t *)&fsl_netif0_gw)[2], ((u8_t *)&fsl_netif0_gw)[3]);
PRINTF("************************************************\r\n");
struct pbuf *q = NULL;
const char* senddata = "Hello\n";
struct udp_pcb *upcb;
err_t stus;
upcb = udp_new();
udp_bind(upcb, IP_ADDR_ANY, 7);
q = pbuf_alloc(PBUF_TRANSPORT, strlen(senddata)+1, PBUF_ROM);
if(!q)
{
PRINTF("out of PBUF_RAM\n");
}
q->payload = (void *)senddata;
while (1)
{
/* Poll the driver, get any outstanding frames */
stus=udp_sendto(upcb, q, &fsl_netif0_gw, 7);
if(stus ==ERR_OK)
{
PRINTF("ERR_OK!\n");
}
ethernetif_input(&fsl_netif0);
sys_check_timeouts(); /* Handle all system timeouts for all core protocols */
}
}
2.将udpecho_raw.c中的udpecho_raw_recv函数修改如下:红色部分为修改
static void
udpecho_raw_recv(void *arg, struct udp_pcb *upcb, struct pbuf *p,
const ip_addr_t *addr, u16_t port)
{
// LWIP_UNUSED_ARG(arg);
// if (p != NULL) {
// /* send received packet back to sender */
// udp_sendto(upcb, p, addr, port);
// /* free the pbuf */
// pbuf_free(p);
// }
}
|
|