高级会员 
  
	- 积分
 - 762
 
        - 金钱
 - 762 
 
       - 注册时间
 - 2021-5-18
 
      - 在线时间
 - 28 小时
 
 
 
 | 
 
信号量基本上用于将任务与系统中的其他事件同步。在FreeRTOS中,信号量是基于队列机制实现的。FreeRTOS中有4种信号量:- 
 
二进制信号量 
 
计数信号量 
 
互斥体 
 
递归的 
 
Binary Semaphore的工作非常简单。Binary Semaphore之所以称为Binary信号量,是因为它存在(‘1’)或不存在(‘0’)。其中没有第三个条件。因此,任务要么具有信号量,要么根本没有。对于Task,我们可以创建一个条件,使其必须具有信号量才能执行自身。因此,如果Task没有信号灯,则别无选择,只能等待当前具有信号灯的Task释放它。 
假设关键部分中有一个低优先级任务正在运行。高优先级任务可以在任何时间抢占LPT。但是,如果LPT具有信号量,并且直到它退出关键部分才释放它,那么HPT除了等待信号量之外别无选择,并且它不能抢占LOW Task。 
 
假设的例子 
假如有三个人在讨论问题,声音大的总是能把声音小的盖住,并且在小声音发话的时候大声音也可以将其盖住,那么现在有一把坐上去才能说话的椅子,谁坐在上面谁才可以发言,否则不能发言,且不能中途打断。这把椅子就是二进制信号量。 
 当我们创建好任务之后,任务的属性如下: 
 
 
- 创建一个二进制信号
 - 
 
 
 
  
原文链接:https://blog.csdn.net/Jodan132/article/details/108206152 
 
 |   
 
 
 
 |