????д????????????????
???????????? ???????[ 2013/8/15 12:21:07 ] ????????
???????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????С????????????????????????????????????????????????????????????????????λ???????????λ?????????????????????????λ?????????????????????????λ??????????????????????????????????????????????????????????????????????????????????????????0?????????????????????????????л???????????
/*?????????б?*/
OS_SEM Sem[MAX_SEM_NUM];
/*
* ?????????
*/
OS_SEM* OSSemCreate(int32 conuter)
{
OS_CPU_SR cpu_sr = 0;
uint32 index;
if (conuter < 0)
{
return (OS_SEM*)NULL;
}
OS_ENTER_CRITICAL();
for(index=0;index<MAX_SEM_NUM;index++)
{
if(Sem[index]==-1)
{
Sem[index]=conuter;
OS_EXIT_CRITICAL();
return(Sem[index]);
}
}
OS_EXIT_CRITICAL();
return (OS_SEM*)NULL;
}
int8 OSSemDelete(OS_SEM* pSem)
{
OS_CPU_SR cpu_sr = 0;
OS_ENTER_CRITICAL();
/*?????????????????0??????????????????*/
if ((*pSem) != 0)
{
OS_EXIT_CRITICAL();
return OS_Err;
}
else
{
(*pSem) = (OS_SEM)-1;
OS_EXIT_CRITICAL();
return OS_OK;
}
}
/*?????????????????????*/
/*?????????*/
/*?????????????*/
int8 OSSemPend(OS_SEM* pSem??uint32 timeout)
{
uint32 index;
OS_CPU_SR cpu_sr = 0;
for (index = 0;index < timeout;index++)
{
OS_ENTER_CRITICAL();
if ((*pSem) > 0)
{
(*pSem)--;
OS_EXIT_CRITICAL();
return OS_OK;/*????????????*/
}
else
{
/*??????????*/
OS_EXIT_CRITICAL();
OSTimeDly(1);
}
}
return OS_Err;
}
/*????????????????????????????*/
int8 OSSemGet(OS_SEM* pSem)
{
OS_CPU_SR cpu_sr = 0;
OS_ENTER_CRITICAL();
if ((*pSem) > 0)
{
(*pSem)--;
OS_EXIT_CRITICAL();
return OS_OK;/*????????????*/
}
OS_EXIT_CRITICAL();
return OS_Err;
}
/*?????????????????*/
int8 OSSemPost(OS_SEM* pSem)
{
OS_CPU_SR cpu_sr = 0;
OS_ENTER_CRITICAL();
(*pSem)++;
OS_EXIT_CRITICAL();
return OS_OK;
}
?????????????????????????????????????????????????????????
???????????printf???????????????????????????????????????????????á?????????????????????????????????????????????????????????á?
OS_SEM* testSem;
void task6(void * arg)
{
testSem=OSSemCreate(1); //????????????
while(1 )
{
OSSemPend(testSem?? 0);
printf("task 6 Running! 27
");
OSSemPost(testSem);
OSTimeDly(100);/*100????10??*/
}
}
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11