RTOS二值信号量使用流程
Posted qingyunboke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RTOS二值信号量使用流程相关的知识,希望对你有一定的参考价值。
1.初始化二值信号量句柄
SemaphoreHandle_t BinarySemaphore;
2.创建二值信号量
BinarySemaphore=xSemaphoreCreateBinary();
3.二值信号量的释放
BaseType_t xHigherPriorityTaskWoken;
xSemaphoreGiveFromISR(BinarySemaphore,&xHigherPriorityTaskWoken);
4.获取二值信号量
BaseType_t err=pdFALSE;
err=xSemaphoreTake(BinarySemaphore,portMAX_DELAY); //portMAX_DELAY用于设置死等,也可设置数字表示二值信号量的阻塞时间,超过阻塞时间程序会继续往下执行,否则就一直等待
if(err==pdTRUE)获取信号量成功标志(用于定时阻塞时间内等待二值信号量)
5.任务切换
二值信号量释放后如需要可做一次任务切换
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
以上是关于RTOS二值信号量使用流程的主要内容,如果未能解决你的问题,请参考以下文章
Freertos-事件标志组,消息队列,信号量,二值信号量,互斥信号量