|
本帖最后由 596142041 于 2021-8-26 10:13 编辑
用的F107+DP83848,采用lwip,不带操作系统,使用组播,每间隔1s向上位机发送一次数据,运行一段时间之后,无数据输出,但是lwip并未报错,此时设备无法PING通,但是能接受上位机下发的数据;这会是什么原因导致的的啊以下是发送数据的函数,周期的调用UDP_send,通过打印,发现在multicast_send_data中的故障值一直返回的都是ERR_OK.
- void UDP_Send(uint8_t *pdata, uint16_t tx_len)
- {
- // memcpy(lwip_demo_buf, pdata, tx_len);
- multicast_send_data(pdata, tx_len);
- }
- /*
- *********************************************************************************************************
- * 函 数 名:
- * 功 能:
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void multicast_send_data(unsigned char *data, unsigned short len)
- {
- err_t err;
- struct pbuf *Gpbuf = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM);
- if(Gpbuf == NULL)
- {
- #if DEBUG == 1
- printf("pbuf_alloc *p Null\r\n");
- #endif
- }
- memcpy(Gpbuf->payload,data,len);//测试数据
- if (udp_server_multi_pcb != NULL)
- {
- err = udp_sendto(udp_server_multi_pcb, Gpbuf, (struct ip_addr *) (&ipgroup_send), UDP_MULTICASE_SEND_PORT);
- printf("Lwip Tx Data Len = %d,err = %d",len,err);
- Log_ENTER();
- }
- else
- {
- printf("udp_server_multi_pcb Null\r\n");
- }
- pbuf_free(Gpbuf);//此处注意,调试出现问题的原因是在此处没有及时未释放该指针
- }
复制代码
|
|