我在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。我的问题是代码或内存有问题。当我从另一个文件返回一些值到...
使用return rxpbpduBuf
,您将返回指向local