STM32之FreeRTOS(九):任务通知模拟消息邮箱
任务通知模拟消息邮箱。这里使用的发送和获取任务通知函数是带有通知值的。前两节模拟二值和计数型信号量的是不带有通知值的函数。
任务通知优缺点: 优点:可以提高响应速度并减少RAM使用。
缺点: 1、任务通知只能有一个接收任务 2、接收任务可以因为接收任务通知进入阻塞态,而发送任务不会因为发送失败进入阻塞态
一般使用步骤是:
1、发送任务通知
2、获取任务通知
第1步:发送任务通知
BaseType_t err=xTaskNotify((TaskHandle_t)Keyprocess_Handler,
//接收任务通知任务句柄
(uint32_t )key,
//任务通知值
(eNotifyAction )eSetValueWithOverwrite);
//覆写的方式发送任务通知
if(err==pdFAIL)
{
printf("任务通知发送失败\r\n");
}
第2步:接收任务通知
BaseType_t err=xTaskNotifyWait((uint32_t )0x00,
//进入函数的时候不清除任务bit
(uint32_t )ULONG_MAX,
//退出函数的时候清除所有的bit
(uint32_t* )&NotifyValue,
//保存任务通知值
(TickType_t )portMAX_DELAY);
//阻塞时间
if(err==pdTRUE)//获取任务通知成功
{
swtich((u8)NotifyValue)
{
case x:...
//user code
.....
}
}
总结
以上是任务通知模拟邮箱的常规用法。