Skip to main content
BPark.4
Associate
May 4, 2020
Solved

UDP Echo server example is not working(Nucleo-144 for STM429ZI)

  • May 4, 2020
  • 2 replies
  • 2908 views

I used example from STM324xG_EVAL\Applications\LwIP\LwIP_UDP_Echo_Server\Src.

I add lwIP into the project using CubeMX.

ping test is good.

I sent the message using Hercules tool. but Necleo didn't receive massages .

0693W000000Wop3QAC.png

there are CubeMX setting value.

I also change GATEWAY ADDRESS to 192.168.42.1, not working too.

0693W000000Wop8QAC.png

0693W000000WopNQAS.png

0693W000000WopSQAS.png

/* lwIP.c*/
void MX_LWIP_Init(void)
{
 /* IP addresses initialization */
	 	IP_ADDRESS[0] = 192;
		IP_ADDRESS[1] = 168;
		IP_ADDRESS[2] = 42;
		IP_ADDRESS[3] = 51;
		NETMASK_ADDRESS[0] = 255;
		NETMASK_ADDRESS[1] = 255;
		NETMASK_ADDRESS[2] = 255;
		NETMASK_ADDRESS[3] = 0;
		GATEWAY_ADDRESS[0] = 0;
		GATEWAY_ADDRESS[1] = 0;
		GATEWAY_ADDRESS[2] = 0;
		GATEWAY_ADDRESS[3] = 0;
 
 /* Initilialize the LwIP stack without RTOS */
....
..
}
 
/*udp_echoserver.c */ 
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
 
 /* Connect to the remote client */
 udp_connect(upcb, addr, UDP_CLIENT_PORT);
 
 /* Tell the client that we have accepted it */
 udp_send(upcb, p);
 
 /* free the UDP connection, so we can accept new clients */
 udp_disconnect(upcb);
	
 /* Free the p buffer */
 pbuf_free(p);
 
}
 
 
/*main.c*/
int main(void)
{
 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
 HAL_Init();
 
 /* USER CODE BEGIN Init */
	/* tcp echo server Init */
	udp_echoserver_init();
 /* USER CODE END Init */
 
 /* Configure the system clock */
 SystemClock_Config();
 
 /* Initialize all configured peripherals */
 MX_GPIO_Init();
 MX_USART3_UART_Init();
 MX_USB_OTG_FS_PCD_Init();
 MX_LWIP_Init();
 
 /* Infinite loop */
 /* USER CODE BEGIN WHILE */
 while (1)
 {
 /* USER CODE END WHILE */
 
 /* USER CODE BEGIN 3 */
	 ethernetif_input(&gnetif);
	 /* Handle timeouts */
	 sys_check_timeouts();
 }
 /* USER CODE END 3 */
}

​I want to work udp_echoserver_receive_callback fuction when I send a message.

This topic has been closed for replies.
Best answer by Piranha

You are calling udp_echoserver_init() before MX_LWIP_Init(). :)

Also be warned...

https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32

2 replies

Piranha
PiranhaBest answer
Principal III
May 4, 2020

You are calling udp_echoserver_init() before MX_LWIP_Init(). :)

Also be warned...

https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32

BPark.4
BPark.4Author
Associate
May 4, 2020

Thank you.

I modifed it under MX_LWIP_Init(). and I can receive the message.

ESale.2
Associate II
December 7, 2020

Hi

Im trying to run echo server on stm32h743z nucleo without any success

int main(void)

{

 /* USER CODE BEGIN 1 */

 /* USER CODE END 1 */

 /* Enable D-Cache---------------------------------------------------------*/

 SCB_EnableDCache();

 /* MCU Configuration--------------------------------------------------------*/

 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

 HAL_Init();

 /* USER CODE BEGIN Init */

 /* USER CODE END Init */

 /* Configure the system clock */

 SystemClock_Config();

 /* USER CODE BEGIN SysInit */

 /* USER CODE END SysInit */

 /* Initialize all configured peripherals */

 MX_GPIO_Init();

 MX_SPI3_Init();

 MX_USART3_UART_Init();

 MX_USB_OTG_FS_PCD_Init();

 MX_LWIP_Init();

 /* USER CODE BEGIN 2 */

 /* USER CODE END 2 */

 /* Infinite loop */

 /* USER CODE BEGIN WHILE */

 udp_echoserver_init();

 while (1)

 {

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

ethernetif_input(&gnetif);

/* Handle timeouts */

sys_check_timeouts();

 }

 /* USER CODE END 3 */

}

any help ?

LBadi.1
Associate II
July 2, 2021

Hello @BPark.4,

I am facing the same issue like you. Ping test is also working and my echo_init in the right place but nucleo can't receive messages using Hercules.

Any idea ?