yangzi8000 发表于 2015-1-4 11:30:25

UCOSii互斥信号量的使用疑问

两个任务里面有两段程序是不能同时运行 我这里使用互斥信号量来封起来 实验结果并没有起到互斥作用,求解

void Task_1(void*p_arg)
        {
         。。。。
       OSMutexPend(SEM_RAIN, 0, &err);
       GPIO_ResetBits(GPIOC,GPIO_Pin_12);
      OSTimeDlyHMSM(0, 0,1,0);
      GPIO_SetBits(GPIOC,GPIO_Pin_12);
      OSTimeDlyHMSM(0, 0,4,0);
      OSMutexPost(SEM_RAIN);
      。。。。
        }

void Task_2(void*p_arg)
        {
                。。。。
                  OSMutexPend(SEM_RAIN, 0, &err);
                USART1_485_Configuration_no(2400,1)        ;
               。。。。
                OSTimeDlyHMSM(0, 0,0,500);
               OSMutexPost(SEM_RAIN);
               。。。。
        }
我觉得是不是 互斥信号量中间 不能有延时 ,有延时即使碰到信号量也会任务切换?????????????

chenchaoting 发表于 2015-1-4 12:08:49

延时可以有,但是你没起到互斥这个原因不明

Austin_Hsu 发表于 2015-1-4 13:18:11

建议你的代码风格改一下:
if ( OSMutexPend(SEM_RAIN, 0, &err) != OS_NO_ERR )
{
debug();
}
不妨先确认一下是否成功获取信号量,然后我们再讨论其它部分有没有问题

Eric2013 发表于 2015-1-4 13:20:45

你的帖子发重复了,我在另一个帖子里面回复你了。
页: [1]
查看完整版本: UCOSii互斥信号量的使用疑问