请教一个LWIP的NETCONN UDP协议的问题

2019-03-23 16:45发布

有一个需求,想采用LWIP协议栈实现PC和STM32F429主控板通讯,拟采用UDP协议。PC上发送控制指令,主控板接收到控制指令后,处理接收到的指令,并根据指令执行的情况

返回响应的结果。
由于指令的执行需要一定的时间,所以想采用Netconn API将UDP接收和UDP发送分成两个任务,
接收到PC指令后,发消息给应用任务(执行指令);应用任务执行后,发消息给UDP发送任务,
发送执行结果给PC。

如果UDP接收和发送在同一任务的时候,指令执行的时候任务处于阻塞状态,可能无法接收到
PC发来的新的指令。

忘了说了,采用的是Freertos操作系统。无法创建两个任务,哪一个任务先创建,
那个任务就能成功创建。但是另外一个任务就没有创建。(在两个任务中加上打印,只能打印一个)

现在的问题是,基于Netconn API的UDP可以分成收发两个任务进行处理吗?如果不行,那有什么办法
在执行PC发送的控制指令的这段时间又不妨碍UDP正常接收下一条指令?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
dwh000
2019-03-24 02:23
LWIP的任务数量是有设置的, 超过了设置的数量, 任务不能创建. 这个可以打开LWIP相应的调试输出, 可以查看输出信息. 接收阻塞时, 发送数据是可以的. 如果采用广播方式应答, 比较简单; 如果向发送数据的IP应答, 需要使用receive_from和send_to函数. receive_from函数, 可以得到发送方的IP及端口, send_to可以向指定的IP和端口发送数据. 这些内容可以百度.

我做这些是使用的socket API, 和Netconn API有多大差别不清楚, 请自己区分. 希望有所帮助.

一周热门 更多>