uc/OS-ii的信号量任务执行优先级问题
void Sem_Task1(void *p_arg)
{
//OS_ERR err;
INT8U err;
//CPU_TS ts;
(void)p_arg;
while(1)
{
OSSemPend(User_Sem,0,&err);
OSTimeDlyHMSM(0, 0, 2, 0);
GPIO_SetValue(0,0x00000400);
OSSemPost(User_Sem);
}
}
void Sem_Task2(void *p_arg)
{
INT8U err;
(void)p_arg;
while(1)
{
OSSemPend(User_Sem,0,&err);
OSTimeDlyHMSM(0, 0, 2, 0);
GPIO_ClearValue(0,0x00004000);
OSSemPost(User_Sem);
}
}
这里我的Sem_Task2任务的优先级高于Sem_Task1,但是为啥我Sem_Task2释放信号量后,会被Sem_Task1请求到???不是应该一直被Sem_Task2请求到么,因为Sem_Task2比Sem_Task1优先级高。
而Sem_Task2之后请求到的信号量是Sem_Task1释放的,而我把Sem_Task1注视掉,这时候Sem_Task2就可以请求到自己释放的信号量了,奇怪了。