FreeRTOS之二值及计数信号量综合

285 阅读1分钟

1 信号量

  • 信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。
  • 在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护。

1.1 二值信号量

1658560937703.png

1.2 计数信号量

1658561920549.png

2 函数接口xSemaphoreGive()与xSemaphoreTake()

  • xSemaphoreTake image.png image.png
  • xSemaphoreGive image.png image.png

3 二值信号量示例

  • 句柄 image.png
  • Main image.png
  • 为了方便管理,所有的任务创建函数都放在这个函数里面 image.png
  • Receive_Task image.png
  • Send_Task image.png
  • 实验结果
  • image.png

4 计数信号量示例

  • 句柄 image.png
  • Main image.png
  • 为了方便管理,所有的任务创建函数都放在这个函数里面 image.png
  • Receive_Task image.png
  • Give_Task image.png
  • 实验结果
  • image.png