|
主控芯片为SMT32F429,使用RMII,外面接LAN8742,无系统(裸系统)。 直接使用CubeMx生成代码,堆栈设置都是0x800。其它代码很少。ping和发送都没有问题,但是每次接收数据时会报错: Assertion "pbuf_free: p->ref > 0" failed at line 753 in ../Middlewares/Third_Party/LwIP/src/core/pbuf.c 频繁接收数据之后,发送会报错ERR_MEM(-1),后面就再也不能正常收发数据了。 各位大佬,请问这是什么原因导致的?或者如何能避免啊? |
程序卡死在USB_EPStartXfer这里
SDIO 标致位 没有变
STM32H743ZIT6的4K SRAM备份域数据,当VTAB引脚的电压低于2.8V就会丢失数据,2.8V以上是正常,请问是什么问题?
STM32H7 TIM3-CH3/4 能不能用于编码器输入。
STM32H7中FMC
SDIO 初始化 死在 __HAL_RCC_SDIO_CLK_ENABLE语句上
STM32H7上中FMC上的NAND FLASH问题
STM32的FMC_D数据线,FMC_A地址线,没有按CubeMX的标准映射连接,能否让SDRAM正常工作
STM32H7的FMC数据线和SDRAM的数据线交叉连接,地址线也交叉连接,并不是D0对D0、A0对A0这样对应,SDRAM能正常工作吗?
我现在使用STM32F446ZET6芯片,外挂了16m的片外SDRAM。想把程序在SDRAM中运行,一直尝试没有成功,希望得到帮助,是否有相关的例子或参考的文档
微信公众号
手机版
补充具体的代码:
发送数据代码:
err_t send_tcp_data(const void *data, u16_t len) { err_t err;
if (tcp_conn != NULL) { / 发送数据 / err = tcp_write(tcp_conn, data, len, TCP_WRITE_FLAG_MORE); // err = tcp_write(tcp_conn, data, len, 0); if (err == ERR_OK) { / 数据发送成功,需要调用tcp_output确保数据发送出去 / tcp_output(tcp_conn); } return err; } else { / 没有有效的TCP连接 / return ERR_CONN; } }
接收数据代码:
err_t tcp_client_recv222(void arg,struct tcp_pcb tpcb,struct pbuf *p,err_t err) { if (p != NULL) { if(fgServerDataRcv==FALSE) { memcpy(u8ServerRcvDataBuff,(p->payload),p->len); fgServerDataRcv=TRUE; }
// struct pbuf *q; // for (q = p; q != NULL; q = q->next) // { // Queue_Push_Array(&qUartT3Rx,(q->payload),q->len); // }
tcp_recved(tpcb, p->len); pbuf_free(p); } else { / 閲婃斁缂撳啿鍖烘暟鎹?/ tcp_close(tpcb); tcp_recv(tpcb, NULL); } }
tcp初始化函数:
void tcp_client_init() { err_t err; PRINTF("tcp_client_init--\r\n"); IP4_ADDR(&service_dest_ip, SERVER_IP_ADDR0, SERVER_IP_ADDR1, SERVER_IP_ADDR2, SERVER_IP_ADDR3);
tcp_conn = tcp_new(); if (tcp_conn != NULL) { tcp_conn->so_options |= SOF_KEEPALIVE; / 启用保活机制 / tcp_conn->keep_idle = 1000; / 保活时间 /
tcp_recv(tcp_conn, tcp_client_recv);
} }
main函数的while循环中加入MX_LWIP_Process();,循环之前加tcp初始化函数。。
各位大佬,请帮忙看下,万分感谢