嵌入式学习小组
直播中

杨丽

7年用户 1292经验值
私信 关注

信号量删除问题

            请问最近我在学习UCOSii在使用到删除信号量时遇到问题;程序如下

  OStimeDly(50);
  //OS_ENTER_CRITICAL();        //进入临界区(无法被中断打断)
  UART_Send_Str("任务1请求信号量rn");
  OSMutexPend(Semp,0,&err);       //请求信号量
  UART_Send_Str("任务1得到信号量rn");
  OSMutexPost(Semp);          //发送信号量
  LED1=~LED1;
//    OS_EXIT_CRITICAL();        //退出临界区(可以被中断打断)
  OSTimeDly(20);
  OSMutexDel (Semp,OS_DEL_NO_PEND,&err);//删除信号量

可是程序运行时能一直打印输出“任务1请求信号量”和“任务1得到信号量”;因此我对删除信号量很不解

回帖(3)

李开英

2019-6-10 06:06:32
你这是不是个while循环?
如果是循环,当然会打印了,删除信号量又不会删除printf....
举报

徐音之

2019-6-10 06:23:00
可以把 删除任务函数的返回 打印出来看一下
举报

田硕

2019-6-10 06:39:42
删除后我用了if(err==OS_NO_ERR)
{
UART_Send_Str("信号量已经删除rn");
}
判断是否删除,可以知道信号量已经删除了。
是不是删除信号量之后,在发送信号量或请求信号量都是无效的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分