打印

关于ucos的中断服务函数中调用OSIntEnter(); 和OSIntExit(); 问题

[复制链接]
15912|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dong130300|  楼主 | 2013-5-30 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在ucos的中断函数中是每次写中断函数都需要OSIntEnter(); 和OSIntExit(); 用来判断中断嵌套层数和进行任务调度吗,我看多数情况是这样的,但是有的书上的程序中有RTC中断服务函数,但是并没有调用操作系统的进入中断服务函数OSIntEnter()和退出中断服务函数OSIntExit(),他的解释是因为在RTC中断服务函数中没有调用任何操作系统的服务函数(如发送信号量之类的函数),故不需要操作系统干预,这是为什么那,这样的话中断之后不就不进行任务调度了吗

沙发
dong130300|  楼主 | 2013-5-31 12:08 | 只看该作者
各位大神 帮帮忙吧

使用特权

评论回复
板凳
i55| | 2013-5-31 15:03 | 只看该作者
OSIntExit()会引发一次任务调度,但是中断里面如果没有PostEvent函数,也就是说中断退出不需要进行任务调度,可以省略掉这个操作。

使用特权

评论回复
地板
dong130300|  楼主 | 2013-5-31 15:22 | 只看该作者
i55 发表于 2013-5-31 15:03
OSIntExit()会引发一次任务调度,但是中断里面如果没有PostEvent函数,也就是说中断退出不需要进行任务调度 ...

你的意思是说只有在中断中有可以触发任务调度的函数的时候才需要用OSIntExit()

使用特权

评论回复
5
i55| | 2013-5-31 15:53 | 只看该作者
dong130300 发表于 2013-5-31 15:22
你的意思是说只有在中断中有可以触发任务调度的函数的时候才需要用OSIntExit() ...

举例来说吧,有一个task里面有pendevent函数,如pendsem,中断postsem,这时候osintexit进行任务调度,中断退出后这个task会立刻执行。但是你的中断没有任何postevent,搞osintexit任务调度是毫无意义的。

使用特权

评论回复
6
dong130300|  楼主 | 2013-5-31 17:34 | 只看该作者
i55 发表于 2013-5-31 15:53
举例来说吧,有一个task里面有pendevent函数,如pendsem,中断postsem,这时候osintexit进行任务调度,中 ...

明白了 也就是在中断之后OSIntExit就是为了让等待信号量的任务立刻执行,所以才进行的任务调度,如果没有什么等待任务,也就没有调度的必要了

使用特权

评论回复
7
hkcj| | 2013-5-31 21:08 | 只看该作者
操作系统这一块   没有怎么接触过   楼主  帮你顶一个    看看别人的意见   

使用特权

评论回复
8
hkcj| | 2013-5-31 21:17 | 只看该作者
问题解决了就好   多逛21ic的好处   是不是啊   没有解决不了的问题

使用特权

评论回复
9
李富贵| | 2013-6-3 15:13 | 只看该作者
中断退出进行任务调度正是抢占式RTOS的精华所在,如果只在Systick里面进行任务调度那不就成了时间片OS?实时性没有了。

使用特权

评论回复
10
ysmz4| | 2014-11-11 10:39 | 只看该作者
感谢!!

使用特权

评论回复
11
Larm1| | 2016-3-15 17:36 | 只看该作者
学习了...

使用特权

评论回复
12
戴风海| | 2016-3-28 20:48 | 只看该作者
刚学到

使用特权

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

本版积分规则

4

主题

35

帖子

0

粉丝