主函数是这样子的
int main(void)
{
/* USER CODE BEGIN 1 */
struct udp_pcb *Udp_pcb;
err_t err;
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART3_UART_Init();
MX_LWIP_Init(); /
/* USER CODE BEGIN 2 */
udp_init();
Udp_pcb=udp_new(); //建立一个PCB模块
err=udp_bind(Udp_pcb,IP_ADDR_ANY,8080);//绑定本地IP和端口
udp_recv(Udp_pcb,udp_receive_callback,NULL);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
MX_LWIP_Process(); //有数据进来就放入pbuf...
}
/* USER CODE END 3 */
}
接收回调函数为
void udp_receive_callback(void *arg,struct udp_pcb *upcb,struct pbuf *p,const ip_addr_t *addr,uint16_t port)
{
printf("here
");
ip_addr_t destAddr = *addr;
if(p != NULL)
{
udp_sendto(upcb,p,&destAddr,port); //回传数据
pbuf_free(p);
}
}
然后用单片机多功能调试助手能连接和发送,不能收到回传数据,改其他端口,居然也能打开,瞬间崩溃,用printf跟踪,程序并没运行到udp_receive_callback,请问是哪里的问题啊,感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>