OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3131|回复: 3

关于UCOSII信号量的问题

[复制链接]

16

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2014-11-21
在线时间
10 小时
发表于 2015-7-10 11:46:16 | 显示全部楼层 |阅读模式
5金钱
我用ucos创建了两个任务,创建了一个信号量协调他们之间的关系,我的想法是任务can_send_thread()一直阻塞等待信号量,申请到信号量是在执行下面的程序,当调用函数canSend()时释放信号量。我现的问题是调用了canSend释放信号量,但是任务can_send_thread还是无法获得信号量,我已经把  can_send_thread的优先级调到最高。那位高手帮我分析一下
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata;  
tran_sem = OSSemCreate(0);         
OSStatInit();  
  OS_ENTER_CRITICAL(); 
  OSTaskCreate(can_send_thread,(void *)0,(OS_STK*)&SEND_TASK_STK[SEND_STK_SIZE-1],SEND_TASK_PRIO);   
OSTaskCreate(can_send,(void *)0,(OS_STK*)&CAN_SEND_TASK_STK[CAN_SEND_STK_SIZE-1],CAN_SEND_TASK_PRIO);           
  OSTaskSuspend(START_TASK_PRIO); 
OS_EXIT_CRITICAL(); 
}


void can_send(void)
{

     while(1)
    {
        canSend(CAN1,M);
        delay_ms(100);
     }
}

void can_recv_thread(void* parameter)
{

  while(1)
  {
       OSSemPend(recv_sem,0,&err);
       。。。。。。。。。。。。。
      。。。。。。。。。。。。。
       。。。。。。。。。。。。
      。。。。。。。。。。。。。

  }

}



unsigned char canSend(CAN_PORT notused, Message *m)
{
        。。。。。。。。。
       。。。。。。。。。
        。。。。。。。。。
       。。。。。。。。。

        OSSemPost(tran_sem);
 
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2014-11-21
在线时间
10 小时
 楼主| 发表于 2015-7-10 13:27:36 | 显示全部楼层
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-7-10 15:03:55 | 显示全部楼层
你调用函数 OSSemPend()请求的是信号量recv_sem,调用函数 OSSemPost()发送的是信号量tran_sem!的两个函数操作的都不是一个信号量,而且你的start_task()里面只创建了信号量tran_sem,能正常才怪了!
开往春天的手扶拖拉机
回复

使用道具 举报

16

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2014-11-21
在线时间
10 小时
 楼主| 发表于 2015-7-10 17:07:09 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
这个贴错了,那个请求的信号量也是tran_sem
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表