已更新 2025年6月
xSendEventStructToIPTask()
FreeRTOS_IP_Private.h
1BaseType_t xSendEventStructToIPTask( const IPStackEvent_t *pxEvent, TickType_t xTimeout );2
xSendEventStructToIPTask() 在整个嵌入式 TCP/IP 堆栈的 实现中被用于将各种事件发送至 RTOS 任务, 该任务正在运行嵌入式 TCP/IP 堆栈。该函数可供网络端口层使用, 以便网络端口层可以将接收事件发送到相同的 RTOS 任务。
参数:
-
pxEvent
指向 IPStackEvent_t 类型的结构体的指针。
1typedef struct IP_TASK_COMMANDS2{3 /* Specifies the type of event being posted to the RTOS task. Must be set to4 eNetworkRxEvent to signify a receive event. */5 eIPEvent_t eEventType;67 /* Points to additional data about the event. Set pvData to the address8 of the network buffer descriptor that references the received frame. */9 void *pvData;
} IPStackEvent_t;
1*IPStackEvent_t 类型*23+ *xTimeout*45 无法立即发送消息时,等待发送消息的时间(以 RTOS tick 为单位),6 消息将发送至 RTOS 任务,7 该任务正在运行嵌入式 TCP/IP 堆栈。8 如果9 [网络事件队列已满](../TCP_IP_Configuration.md#ipconfigEVENT_QUEUE_LENGTH),则可能无法立即发送消息。101112**返回:**1314如果事件已成功发送至 RTOS 任务,15而该任务正在运行嵌入式 TCP/IP 堆栈,则返回 pdPASS。如果 xTimeout 大于16零,则调用任务可能已保持在阻塞状态(因此17不消耗任何 CPU 时间)以等待消息发送,但18在函数返回之前,消息已成功发送。1920如果由于网络事件队列已满而无法向 RTOS 任务发送事件,21(该任务正在运行嵌入式 TCP/IP 堆栈),[](../TCP_IP_Configuration.md#ipconfigEVENT_QUEUE_LENGTH)22则返回 pdFAIL。如果 xTimeout 大于零,则23调用任务可能已保持在阻塞状态以等待24网络事件队列上的可用空间,但在那之前25阻塞时间已过期。262728**用法示例:**2930在[“将 FreeRTOS 移植到不同的微控制器”](../Embedded_Ethernet_Porting.md)页面上提供了示例31。在该页面搜索 xSendEventStructToIPTask() 以查找示例32源代码。3334