中断的困惑。
假如我开了两个定时器 都是50ms执行一次中断 假如低优先级的刚好到了50ms要进入中断 此时正在执行高级定时器的中断 那这个低级定时器的中断会不会错过就不执行了? 此时中断 正在执行,任何級別中断都要等等 easier 发表于 2014-2-26 20:11此时中断 正在执行,任何級別中断都要等等
搞错了吧 不是可以中断嵌套的吧,高优先级可以打断低优先级啊,虽然是51而已。。 到底会不会啊???求大神说说。。 对51不了解。
就算开启中断嵌套 低优先级也不能中断高优先级的吧?
觉得应该是将低中断标志位置位,等高优先级的完成之后再执行低优先级的中断
新手一个不喜雾喷////{:sleepy:}{:sleepy:} Jordan?? 发表于 2014-2-26 20:35
对51不了解。
就算开启中断嵌套 低优先级也不能中断高优先级的吧?
觉得应该是将低中断标志位置位,等高 ...
你是说会挂起中断?谢谢。。我也不太懂啊 大哈欠E 发表于 2014-2-26 20:36
你是说会挂起中断?谢谢。。我也不太懂啊
用个仿真器来试试看不就懂了。。。。。 pc先执行高优先级中断,低的挂起 不会错过的,高优先级在执行,那么就挂会把低优先级的标志位挂起的。等执行完高优先就接着执行低优先级的中断 高优先级中断执行完毕后再进入低优先级中断,除非你在高优先级中断服务里清除了低优先级中断标志,这样低优先级中断就不会执行了。 Jordan?? 发表于 2014-2-26 20:35
对51不了解。
就算开启中断嵌套 低优先级也不能中断高优先级的吧?
觉得应该是将低中断标志位置位,等高 ...
51的stack有限制,好象最多嵌套3级中断,再高栈就溢出了。 wye11083 发表于 2014-2-26 21:24
51的stack有限制,好象最多嵌套3级中断,再高栈就溢出了。
{:lol:} {:lol:} 51不怎么会 受教了 楼上正解,51的中断就4个寄存器组,不同寄存器组的中断发生中断时就不会存在高优先级搞坏低优先级。 本帖最后由 easier 于 2014-2-26 23:41 编辑
51 中断嵌套,是蓄意人為!根本應避免使用! 本帖最后由 easier 于 2014-2-26 23:55 编辑
此时中断 正在执行時,請查看全局中斷致能標示位!
並請查看 RETI 的作用! 对51还是不很了解,学习了 低级中断会不会在高级中断执行完之后执行要看相应的条件是不是满足,9楼10楼说的比较靠谱。
51只有2级中断优先级,高级可打断低级的,不能打断高级和同级的,因为只有2级,所以中断嵌套最多只有一次
51的栈只要内存足够,可以很大,函数调用嵌套可以很深,11楼的说法不靠谱
13楼的说法就更不靠谱,中断和寄存器组没什么关系,你可以指定一个寄存器组只给一个中断使用,这样
就减少一些保存现场的开销,你甚至一个中断使用全部4个寄存器组,当然也可以一个都不使用,你自己
在中断中保存现场,这样万一某一家的51支持更多级中断嵌套也完全没有问题 easier 发表于 2014-2-26 23:38
51 中断嵌套,是蓄意人為!根本應避免使用!
非常同意14L所說 , 套來套去 , 到時永遠出不來. 51只有2级中断优先级 <- 請注意是優先
當多於 1 個中断同時發生,高優先級先理處,低先級的就等待排隊處理! cc224 发表于 2014-2-27 10:01
低级中断会不会在高级中断执行完之后执行要看相应的条件是不是满足,9楼10楼说的比较靠谱。
51只有2级中断 ...
嗯 谢谢,我觉得你说的更靠谱 呵呵 51正在学习中,对中断没完全理解 楼主多虑了,不会出现你说的情况,除非你的中断处理函数很长,超过50ms,才可能会出现丢中断的情况。
页:
[1]