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
}
总结
以上是任务通知模拟二值信号量的常规用法。