2019-03-24 15:35发布
楼主的问题实际上是两个问题,
1. 尾链是什么用的?
2. M3的中断优先级机制?
3. 我先回答第一个问题
1) 在M3之前的MCU在处理中断时一般都采用如下的过程:
中断1发生 -> 现场保护1 -> 中断1处理 -> 现场恢复
2) 如果在中断1发生之后,未处理结束之前,和中断1优先级相同的中断2也发生了,这个时候的处理过程如下:
中断2发生.................................................................-> 现场保护2 -> 中断2处理 -> 现场恢复
从上面的过程我们可以看出,实际上我们进行了2次同样的现场保护,即现场保护1和现场保护2, 也进行了2次同样的现场恢复。
M3的内核对这个过程进行了优化,在中断1处理完后,并不急于恢复现场,而是判断是否由另外的中断2发生,如果有则不退出中断处理,而是直接进入中断2处理程序。
处理流程如下:
中断1发生 -> 现场保护1 -> 中断1处理 ->
中断2发生...........................................中断2处理 -> 现场恢复
3) 总结一下,由上描述可知,尾链技术是为了简化两个相同优先级的中断的切换过程。
注意: 这里讲的相同优先级是指两个中断不能互相打断,而不是绝对的相等。M3采用中断优先级编号和组号来管理中断的优先级。使用者需要了解这个机制才能正确的设置各个中断源的处理流程。
4. 关于第二个问题,请参见我对M3中断优先级的描述: http://bbs.eeworld.com.cn/viewthread.php?tid=301771&highlight=
最多设置5个标签!
楼主的问题实际上是两个问题,
1. 尾链是什么用的?
2. M3的中断优先级机制?
3. 我先回答第一个问题
1) 在M3之前的MCU在处理中断时一般都采用如下的过程:
中断1发生 -> 现场保护1 -> 中断1处理 -> 现场恢复
2) 如果在中断1发生之后,未处理结束之前,和中断1优先级相同的中断2也发生了,这个时候的处理过程如下:
中断1发生 -> 现场保护1 -> 中断1处理 -> 现场恢复
中断2发生.................................................................-> 现场保护2 -> 中断2处理 -> 现场恢复
从上面的过程我们可以看出,实际上我们进行了2次同样的现场保护,即现场保护1和现场保护2, 也进行了2次同样的现场恢复。
M3的内核对这个过程进行了优化,在中断1处理完后,并不急于恢复现场,而是判断是否由另外的中断2发生,如果有则不退出中断处理,而是直接进入中断2处理程序。
处理流程如下:
中断1发生 -> 现场保护1 -> 中断1处理 ->
中断2发生...........................................中断2处理 -> 现场恢复
3) 总结一下,由上描述可知,尾链技术是为了简化两个相同优先级的中断的切换过程。
注意: 这里讲的相同优先级是指两个中断不能互相打断,而不是绝对的相等。M3采用中断优先级编号和组号来管理中断的优先级。使用者需要了解这个机制才能正确的设置各个中断源的处理流程。
4. 关于第二个问题,请参见我对M3中断优先级的描述: http://bbs.eeworld.com.cn/viewthread.php?tid=301771&highlight=
[ 本帖最后由 Triton.zhang 于 2011-10-1 00:33 编辑 ]一周热门 更多>