在 FreeRTOS 中,信号量(Semaphore)是一种用于实现任务之间同步和资源共享的机制。它是一种计数型的同步原语,用于控制对共享资源的访问和保护。
在FreeRTOS中,包含4种类型的信号量:
1. 二进制信号量(Binary Semaphore):
二进制信号量是最基本的信号量类型。它的计数值要么为0(表示信号量已被获取),要么为1(表示信号量可用)。二进制信号量常用于实现互斥访问共享资源的场景,只允许一个任务访问资源。
在 FreeRTOS 中,你可以使用 xSemaphoreCreateBinary()
函数创建一个二进制信号量。任务可以通过 xSemaphoreTake()
函数获取信号量,通过 xSemaphoreGive()
函数释放信号量。
2. 计数型信号量&#