天天看点

STM32之FreeRTOS(七):任务通知模拟二值信号量STM32之FreeRTOS(七):任务通知模拟二值信号量第1步:发送任务通知第2步:获取任务通知总结

STM32之FreeRTOS(七):任务通知模拟二值信号量

文章目录

  • STM32之FreeRTOS(七):任务通知模拟二值信号量
  • 第1步:发送任务通知
  • 第2步:获取任务通知
  • 总结

任务通知模拟二值信号量,实际与二值信号量的发送与获取十分类似,只是将二值信号量的发送与获取换成任务通知的发送与获取。

任务通知优缺点: 优点:可以提高响应速度并减少RAM使用。 缺点: 1、任务通知只能有一个接收任务 2、接收任务可以因为接收任务通知进入阻塞态,而发送任务不会因为发送失败进入阻塞态

一般使用步骤是:

1、发送任务通知

2、获取任务通知

第1步:发送任务通知

//任务句柄
TaskHandle_t DataProcess_Handler;
//发送任务通知
vTaskNotifyGiveFromISR(DataProcess_Handler,&xHigherPriorityTaskWoken);
//如果需要的话进行一次任务切换
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);

           

第2步:获取任务通知

u32 NotifyValue=ulTaskNotifyTake(pdTRUE,portMAX_DELAY);	//获取任务通知; 

if(NotifyValue==1)	//清零之前的任务通知值为1,说明任务通知有效
{	
	//user code
}
           

总结

以上是任务通知模拟二值信号量的常规用法。

继续阅读