打印
[ZLG-ARM]

再次发帖问中断程序中发送信号量

[复制链接]
1875|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
id001|  楼主 | 2008-5-28 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我重新将问题整理到这里:原帖是:
UCOS-II(中断中发送信号量的疑问)
---------------------------
实验板使用的是:
      SmartARM2300
看到一段代码如下:
等待信号量的代码:
void   TaskBeep(void *pdata)
{
.....
   while(1)
   {
        OSSemPend(Sem1,0,&err);
        .........
   }
}
中断服务程序:(中断服务程序这样发送信号量是否不对????)
void   ExInt_Exception(void)
{
   OSSemPost(Sem1);    ???/*如果TaskBeep的信号量已处于等待状态,那么这里其不是要进行任务切换入TaskBeep中?而这是在中断服务程序中????*/
   IO0IntClr= KEY1;        
   VICVectAddr = 0;
}
我觉得以上的中断程序中发信号量,正确的因该是:
void   ExInt_Exception(void)
{
   OSIntENTER();           //加上这
   OSSemPost(Sem1);    
   IO0IntClr= KEY1;        
   VICVectAddr = 0;
   OSIntExit();           //退出时任务调度!!(如此才可以吧)
}
-----------------------------

再次问是否要让中断服务程序参与任务管理,因该加上OSIntENTER()与OSIntExit()两个函数???

如果不加,请解释一下是为什么???

LPC新手,谢谢指教

相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2978800&tp=UCOS-II%uFF08%u4E2D%u65AD%u4E2D%u53D1%u9001%u4FE1%u53F7%u91CF%u7684%u7591%u95EE%uFF09

相关帖子

沙发
zlgarm| | 2008-5-28 14:51 | 只看该作者

楼主您好

您好:
   当中断服务子程序调用OSSemPost()函数时,不会发生任务切换。因为,任务切换必须等到中断嵌套的最外层中断服务子程序调用OSIntExit()函数后,才能进行。详细内容参见《嵌入式实时操作系统ucos-II(第二版)》的174页。
by:lrk

使用特权

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

本版积分规则

35

主题

107

帖子

0

粉丝