FreeRTOS 任务通知模拟计数型信号量

举例

//释放计数型信号量任务函数
void SemapGive_task(void *pvParameters)
{
    u8 key;
    while(1)
    {
        key = KEY_Scan(0); //扫描按键
        if(key == WKUP_PRES)    
        {
                xTaskNotifyGive(SemapTakeTask_Handler); //发送任务通知
        }
        vTaskDelay(10); //延时10ms,也就是10个时钟节拍 
    }
}

//获取计数型信号量任务函数
void SemapTake_task(void *pvParameters)
{
    uint32_t NotifyValue;
    while(1)
    {
        NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY); //获取任务通知
        printf("NotifyValue is %d.\r\n", NotifyValue);
        vTaskDelay(1000); //延时1s,也就是1000个时钟节拍   
    }
}

实验现象
1

posted @ 2018-06-06 22:48  thomas_blog  阅读(281)  评论(0编辑  收藏  举报