使用ucos信号量,未使用Post函数释放信号量,任务却能请求到

2019-07-21 00:47发布

使用ucosII做一个任务的同步,为了找出问题所在把其他任务全部屏蔽了,只剩下一个任务

void mpu6050_task(void *pdata)
{
  u8 err;
        pdata = pdata ;
        while(1)
        {

     OSSemPend(sem_mpu6050,0,&err);
        
           mpu6050_times++;
           disp_num(200,130,mpu6050_times);//液晶显示该数字
                 delay_ms(100);
    
  }
}

创建任务前已经初始化信号量 sem_mpu6050

sem_mpu6050 = OSSemCreate(0);

释放该信号量的函数位于串口3中断服务子程序中

void USART3_IRQHandler(void)                   
{
   OSIntEnter();
   if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  //接收中断有效
     {
                         OSSemPost(sem_mpu6050);
                       Temp0[counter] = USART_ReceiveData(USART3);   //
     
        
     }
         OSIntExit();

}

由于是第一次用到ucos,为了测试信号量到底有没有起作用,我将中断服务程序中的释放函数OSSemPost(sem_mpu6050)屏蔽,但是不知为什么任务仍能请求到信号继续向下执行,有没有碰到过这种现象的呢,在线等
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。