qjs412_avr 发表于 2012-10-13 11:10:24

uc/os中任务调度发生在中断中,无论什么中断吗?

最近在学习uc/os II ,一般是用定时器来作为uc/os II 的时钟,定时器中断服务程序里会调用任务切换函数,最近看周工的例程,发现文件IRQ.s是干这个事的,文件的意思好像是进入IRQ中断都会进入这一段代码,

如果还有另外一个中断,是不是也会像定时器中断那样调用任务切换函数,或者用程序过滤,只有定时器中断才可以调用任务切换函数?

请大家指教一下!谢谢

tiancaigao7 发表于 2012-10-13 11:40:21

这给没有关系,如果你有外部的脉冲进入,你在捕捉中断里面切换也可以。甚至你软件自己调用这个函数也没有问题,只不过那样切换的实时性就没有办法保证了。

qjs412_avr 发表于 2012-10-13 12:13:35

tiancaigao7 发表于 2012-10-13 11:40 static/image/common/back.gif
这给没有关系,如果你有外部的脉冲进入,你在捕捉中断里面切换也可以。甚至你软件自己调用这个函数也没有问 ...

谢谢

如果在其他没有规律的中断(就是发生中断的时间不可预知)里进行任务切换,这样的话系统的时钟就被改变了,就像您说的那样就没法预知实时性了!

fshunj 发表于 2012-10-21 16:53:20

不是的.无论是什么中断,只要这个中断是第一层中断,那么它返回都会调用OSIntExit,如果有比被打断的任务更高优先级任务就绪那么就切换到更高优先级任务去不会再返回.如果没有的话就返回到被打断的任务去.
第二种情况是如果这个中断不是第一层中断,是嵌套进来的,它调用OSIntExit仅仅是减去嵌套层数然后就返回上一级中断程序的了.
页: [1]
查看完整版本: uc/os中任务调度发生在中断中,无论什么中断吗?