7.5.1 信号量创建 xSemaphoreCreateBinary()用于创建一个二值信号量,并返回一个句柄,默认二值信号量为空,在使用函数 xSemaphoreTake()获取之前必须 先 调 用 函 数 xSemaphoreGive() 释放后才可以获取。 xSemaphoreCreateCounting()创建计数信号量。 <span style="outline: 0px; max-width: 100%; font-family: " operator="" mono",="" consolas,="" monaco,="" menlo,="" monospace;="" font-size:="" 12px;="" white-space:="" pre;="" color:="" rgb(209,="" 154,="" 102);="" line-height:="" 26px;="" box-sizing:="" border-box="" !important;"="">1.</span><span style="color: rgb(171, 178, 191); font-family: " operator="" mono",="" consolas,="" monaco,="" menlo,="" monospace;="" font-size:="" 12px;="" white-space:="" pre;="" background-color:="" rgb(40,="" 44,="" 52);"=""> </span><span style="outline: 0px; max-width: 100%; font-family: " operator="" mono",="" consolas,="" monaco,="" menlo,="" monospace;="" font-size:="" 12px;="" white-space:="" pre;="" color:="" rgb(97,="" 174,="" 238);="" line-height:="" 26px;="" box-sizing:="" border-box="" !important;"="">#<span style="outline: 0px; max-width: 100%; line-height: 26px; box-sizing: border-box !important;">define</span> xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) </span>
uxMaxCount 计数信号量的最大值,当达到这个值的时候,信号量不能再被释放。uxInitialCount 创建计数信号量的初始值。 xSemaphoreCreateMutex()用于创建一个互斥量,并返回一个互斥量句柄,只能被同一个任务获取一次,如果同一个任务想再次获取则会失败。 xSemaphoreCreateRecursiveMutex()用于创建一个递归互斥量,递归信号量可以被同一个任务获取很多次,获取多少次就需要释放多少次。递归信号量与互斥量一样,都实现了优先级继承机制,可以减少优先级反转的反生。
|