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
}
總結
以上是任務通知模拟二值信号量的正常用法。