打印
[应用相关]

ucosii中 中断中要等待信号量怎么办

[复制链接]
4482|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dkill|  楼主 | 2008-6-11 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jinjing999| | 2008-6-11 17:45 | 只看该作者

你这样用法是不正确的,中断中不能有信号等待

使用特权

评论回复
板凳
jinjing999| | 2008-6-11 17:48 | 只看该作者

你反过来应用

你可以在中断中发送一个信号,这样你就中断中就不用等待了

使用特权

评论回复
地板
dkill|  楼主 | 2008-6-11 18:14 | 只看该作者

我要收取信号 好进行操作

使用特权

评论回复
5
dkill|  楼主 | 2008-6-11 18:53 | 只看该作者

我在中断里就收信号量

用这个函数
  msg = (CPU_INT08U *)OSMboxAccept(AppUserIFMbox);
为什么一直是零呢

使用特权

评论回复
6
xusnwise| | 2008-6-12 09:48 | 只看该作者

可否建立个优先级高的任务,在任务中收信号量

可否建立个优先级高的任务,在任务中收信号量,
接到sem后,剥夺现有任务开始你要求的操作.

使用特权

评论回复
7
jinjing999| | 2008-6-12 14:39 | 只看该作者

想这样做,你只有建立一个轮询任务了

直接查询信号。

我说的意识你是没有听明白。
比如捕捉一个信号,你可以开捕捉中断,然后在中断中用:OSSemPost。

你再定义一个任务是这样的格式:

task()
{
     for (;;) 
    {
         msg=OSSemPend
          }
}

使用特权

评论回复
8
jackbao| | 2008-6-12 15:26 | 只看该作者

我是这样做的 请看我的程序:

中断函数:(可以正常进入)
 static void  App_Spurious_ISR1 (void) //@ "ICODE"
{   
   CPU_INT08U   key=2;
   OS_CPU_SR  cpu_sr;
   
   EXTI_ClearFlag(EXTI_Line0);
   
    OS_ENTER_CRITICAL();                                        /* Tell uC/OS-II that we are starting an ISR                */
    OSIntNesting++;
    OS_EXIT_CRITICAL();
    
   
     OSMboxPost(AppUserIFMbox, (void *)key);//发送信号量
      

      OSIntExit(); 
   
}
任务(不是最高级的)

static  void  AppTaskUserIF (void *p_arg)
{
    CPU_INT08U  *msg;
    CPU_INT08U   err;
    //CPU_INT32U   nstate;
    CPU_INT32U   pstate;


    (void)p_arg;


    AppDispScr_SignOn();
    OSTimeDlyHMSM(0, 0, 1, 0);
    nstate = 1;
    pstate = 1;


    while (DEF_TRUE) {
        msg = (CPU_INT08U *)(OSMboxPend(AppUserIFMbox, OS_TICKS_PER_SEC / 10, &err));
     if (err == OS_NO_ERR) {
            nstate = (CPU_INT32U)msg;
        }


        switch (nstate) {
            case 2:
              LED_On(0);
              OSTimeDlyHMSM(0, 0, 1, 50);
                break;  
        }
    }
    
}
为什么接受的信号量不对,应该说是0  而不是我中断里 发送的2
这个和AppUserIFMbox的定义有关系吗
  楼上能帮我看看什么原因吗

使用特权

评论回复
9
hotpower| | 2008-6-12 22:47 | 只看该作者

感觉还是keil的rtx好用~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

201

帖子

0

粉丝