4901|8

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ucosii中中断中要等待信号量怎么办 [复制链接]

                                  
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2008-6-12 22:47
点赞 关注
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

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

                                  
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

你反过来应用

你可以在中断中发送一个信号,这样你就中断中就不用等待了
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 

我要收取信号 好进行操作

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 

我在中断里就收信号量

用这个函数
  msg = (CPU_INT08U *)OSMboxAccept(AppUserIFMbox);
为什么一直是零呢
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 

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

可否建立个优先级高的任务,在任务中收信号量,
接到sem后,剥夺现有任务开始你要求的操作.
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 

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

直接查询信号。

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

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

task()
{
     for (;;) 
    {
         msg=OSSemPend
          }
}
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 

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

中断函数:(可以正常进入)
 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的定义有关系吗
  楼上能帮我看看什么原因吗
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 

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

                                  
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表