软件优先级
Level 0 (main)
Level 1
Level 2
Level 3 (= software priority disabled)
=================================
LEVEL 3 为什么说是关闭的软件优先级了呢?不是软件优先级最高吗?
如果两个中断来了,A,B, A的硬件优先级是 比 B高,但是 A软件优先级是 LEVEL 2,而 B的软件优先级是 LEVEL 3
这个时候应该是先响应B吧,依据软件优先级
Level 3 (= software priority disabled) 这个是什么意思?
是的,先响应B。
因为B的优先级是Level 3,响应B之后,CPU不能再响应任何其它中断,这不就相当于关闭了中断吗?
高优先级的中断响应完了以后 不能再响应低优先级的中断了?
stm8的中断分两种,一种是非嵌套中断,一种是嵌套中断。
非嵌套中断:默认所有中断软件优先级都为3,这种时候根据硬件优先级高低来决定先响应哪个中断,且如果一个中断正在响应,其他中断不管硬件优先级高低都不会被响应,只能等当前中断响应结束,再根据硬件优先级决定响应哪个中断。此时软件优先级同为3,相当于失能了。
嵌套中断:软件优先级可设,软件优先级不同,先响应软件优先级高的中断,如果在中断发生过程中还有比此中断软件优先级更高的中断发生,则先执行更高优先级的中断,执行完后再来执行当前中断。
感谢,这样的描述比datasheet里的“Level 3 (= software priority disabled*)” 强多了
datasheet 很多内容描述的并不深刻,还是需要自己做的时候不断挖掘的
都为最高了,怎么把一个中断设置为比其他中断优先级高呢?