信号量
操作系统中用来解决资源共享和进程同步的一种方法(带有阻塞任务的功能)。
二值信号量
顾名思义,它只有两种状态:
被占用了可以看作0状态;
未被占用可以看作1状态。
创建二值信号量:
SemaphoreHandle_t xSemaphoreCreateBinary(void); //创建二值信号量
SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer );
//静态方式创建二值信号量,需用户指定信号量的地址空间
释放信号量:
BaseType_t xSemaphoreGive( SemaphoreHandle_t xSemaphore ); //释放信号量
BaseType_t xSemaphoreGiveFromISR( SemaphoreHandle_t xSemaphore,
signed BaseType_t *pxHigherPriorityTaskWoken);
//从中断中释放信号量,后一个参数的返回值表示是否有高优先级的任