直达任务通知(Task Notify)

直接向任务发送通知并携带数据,而无需通过队列/信号量等中间象(单向通信,一发一收)。

使用流程:发送通知->接收通知

1.  发送通知

先创建任务句柄,再通过函数发送

static TaskHandle_t TaskA_Handle;
static TaskHandle_t TaskB_Handle;
xTaskNotify(TaskA_Handle,value,eSetValueWithOverwrite);
//把一个32位的值value发送到“TaskA_Handle”任务中,发送的模式位第三个参数“eSetValue”

2.  等待接收通知

先创建一个值用来接收数据,再使用xTaskNotifyWait接收

xTaskNotifyWait接收自身任务的句柄中的数据,传到TaskNotify_data中。

xTaskNotifyWait(
uint32_t ulBitsToClearOnEntry, // 进入时清除的位掩码
uint32_t ulBitsToClearOnExit, // 退出时清除的位掩码
uint32_t *pulNotificationValue, // 输出参数:接收通知值
TickType_t xTicksToWait // 超时时间(单位:Tick)
);
例:
uint32_t TaskBNotify_data = 0;
xTaskNotifyWait(0x00,ULONG_MAX,&TaskNotify_data,portMAX_DELAY);