无延迟功能的返回值问题

问题描述 投票:0回答:1

我在STM32F4和交换IC上有一个以太网应用程序,我可以接收ping并回复ping。我的问题是代码或内存有问题。当我将另一个文件中的某个值返回到main.c文件时,如果我不使用延迟,那么几秒钟后我会遇到一些问题,但是我不想使用延迟功能,如何解决这个问题或为什么我需要延迟。

我在main.c的while循环中接收ping和多播数据包(我不断接收以太网帧)

uint8_t * preturnBuf;
    preturnBuf = ethernetif_input(&gnetif);

ethernetif.c文件的ethernetif_input函数中>

 uint8_t * ethernetif_input(struct netif *netif){
      err_t err;
      struct pbuf *p;
      uint8_t rxpbpduBuf[61];

      p = low_level_input(netif);
        if (memcmp (p->payload, "\x01\x80\xC2\x00\x00\x00", 6) == 0){

    for(int i = 0; i < 61; i++)
          {
        rxpbpduBuf[i] = (uint8_t)(((unsigned char *)p->payload)[i]);
          }
    }
        }
 else{
      /* entry point to the LwIP stack */
  err = netif->input(p, netif);

  if (err != ERR_OK)
  {
    LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\n"));
    pbuf_free(p);
    p = NULL;
  }
}

if(p != NULL)
  {
    pbuf_free(p);
    p=NULL;

  }
///***** DELAY FUNCTION HERE********
  return rxpbpduBuf;

}

如果我在返回值之前使用延迟功能,那么我没有任何错误。但是,当我不使用时,几分钟后出现硬错误。

我在STM32F4和交换IC上有一个以太网应用程序,我可以接收ping并回复ping。我的问题是代码或内存有问题。当我从另一个文件返回一些值到...

c stm32 ethernet lwip
1个回答
0
投票

使用return rxpbpduBuf,您将返回指向local

© www.soinside.com 2019 - 2024. All rights reserved.