UDP接收回调函数不会执行。为什么?

问题描述 投票:0回答:0
int main(void)
{
  
  HAL_Init();

  
  SystemClock_Config();

  
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_LWIP_Init();
  MX_USART3_UART_Init();
  MX_TIM6_Init();
  /* USER CODE BEGIN 2 */
  struct udp_pcb* Demo_upcb;
  ip_addr_t myIPADDR,destip;
  IP_ADDR4(&myIPADDR,192,168,33,1);
  IP_ADDR4(&destip,192,168,33,101);

  Demo_upcb = udp_new();
  err_t er3 = udp_bind(Demo_upcb, &myIPADDR, 8);
  if(er3 != ERR_OK)
      {
          while(1)
                  {
                      HAL_Delay(200);
                      HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
                  }
      }
      sprintf(buffer,"This is UDP message\r\n");

      struct pbuf* psend = pbuf_alloc(PBUF_TRANSPORT, 30, PBUF_RAM);

      memcpy(psend->payload, buffer , 30);
    HAL_TIM_Base_Start_IT(&htim6);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

      ethernetif_input(&gnetif);
              sys_check_timeouts();


  }
  /* USER CODE END 3 */
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);//Blue LED
    udp_recv(Demo_upcb, &udpcall, NULL);
}

void udpcall(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
    sprintf(buffer,"This is UDP message \r\n ");
          struct pbuf* psend = pbuf_alloc(PBUF_TRANSPORT, 30, PBUF_RAM);
          memcpy(psend->payload, buffer , 30);
    udp_connect(pcb, addr, port);
    err_t err2 = udp_send(pcb, psend);
    HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);//Green LED
     pbuf_free(psend);
    pbuf_free(p);
}

我正在尝试通过 UDP 发送器应用程序将 UDP 数据包发送到 stm32 板的 IP 地址来设置 UDP 连接。在板上,我的目标是读取 UDP 数据包,并在收到每个数据包时将 UDP 数据包发送回我的笔记本电脑。 我将计时器设置为每隔一秒调用一次 HAL_TIM_PeriodElapsedCallback。每隔一秒,将调用 udp_recv() 函数,在此之前,蓝色 LED 将闪烁。我在 udpcall() 函数块中放置了一个闪烁的 LED 代码,以了解函数的 udpcall 是否正在处理中。似乎控件永远不会进入 udpcall 功能,因为绿色 LED 永远不会闪烁。

谁能找出问题所在,以及为什么它不执行 udpcall 函数?

c timer udp stm32 lwip
© www.soinside.com 2019 - 2024. All rights reserved.