信号量的使用
(1)信号量的含义:信号量是一类事件,使用信号量的最初目的是为了给共享资源
(2)UCOS-II的信号量里面有一个OSEventCnt,正确的认识这个,是使用信号量的关
(4)下面分两种情况进行详细的讨论
-
OSSemPen(xx, 0, xx) 设置为0的话,任务将被一直挂起直到收到OSSem
-
OSSemPen(xx, >0, xx) 设置为>0的话,任务将被挂起相应的时间.
信号量的使用还是很简单的
我现在主要将其用在两个方面
(1)用来触发一个事件的发生。
static void AppTaskCom(void *p_arg) //这个任务用来申请一个信号量,在500毫秒里面可以
{//得到信号量的话输出成功,否则失败。
INT8U err;
(void)p_arg;
while(1){
OSSemPend(Semp, 500, &err);
if(err == OS_ERR_NONE)
{
printf("SUCCESS\r\n");
}
else
{
printf("failed\r\n");
}
}
}
(2)用来独占一个资源,这个的使用要小心,防止优先级的反转,所以最好使用这两个资源的任务之间不要有别的优先级,有的话就容易发生优先级的反转情况,这种情况是不允许的。
//在这里添加需要使用的资源