今天是2024.10.10,学习二值信号量。用到的是stm32f407
信号量用于控制队共享资源的访问和任务同步。
二值信号量,包括接下来可能要学习的信号量,其实都是队列的一种。所以创建二值信号量,释放二值信号量,获取二值信号量的函数实际上就是调用创建队列,入队和出队函数。学习队列的时候创建队列有一个参数,这个参数是队列类型,默认值是普通队列,但是还可选其他信号量的类型。
一.二值信号量简介
二值信号量的数据结构是一个只有一个队列项的队列,不论是释放二值信号量还是获取二值信号量都有可以有阻塞时间。
二.相关函数
创建二值信号量
SemaphoreHandle_t xSemaphoreCreateBinary( void )

释放二值信号量
任务级BaseType_t xSemaphoreGive( xSemaphore )

中断级BaseType_t xSemaphoreGiveFromISR( SemaphoreHandle_t xSemaphore, BaseType_t *pxHigherPriorityTaskWoken)

获取二值信号量
任务级BaseType_t xSemaphoreTake(SemaphoreHandle_t xSemaphore, TickType_t xBlockTime)
中断级BaseType_t xSemaphoreTakeFromISR(SemaphoreHandle_t xSemaphore, BaseType_t * pxHigherPriorityTaskWoken)
