中断
中断
抢占优先级和响应优先级详解
1,抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
2,响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
3,抢占和响应都相同的情况下,自然优先级越高的,先执行
4,自然优先级:中断向量表的优先级
5,数值越小,表示优先级越高
- 优先级分组
优先级分组 | AIRCR[10:8] | IPRx bit[7:4]分配 | 分配结果 |
---|---|---|---|
0 | 111 | None :[7:4] | 0位抢占优先级,4位响应优先级 |
1 | 110 | [7] :[6:4] | 1位抢占优先级,3位响应优先级 |
2 | 101 | [7:6] :[5:4] | 2位抢占优先级,2位响应优先级 |
3 | 100 | [7:5] :[4] | 3位抢占优先级,1位响应优先级 |
4 | 011 | [7:4] :None | 4位抢占优先级,0位响应优先级 |
注:一个工程中,一般只设置一次中断优先级分组
- 例子讲解
由上图,RTC
和EXTI1
的抢占优先级都为2,在这四个里面是最高的,而RTC
的响应优先级没有EXTI1
的响应优先级高,因此先执行EXIT1
再执行RTC
,再看EXTI0
和Systick
,这两个的抢占和响应的优先级都一样,因此看对比他们的自然优先级,由于Systick
的自然优先级高于EXIT0
,所以执行顺序是S有stick
先然后才是EXIT0
。
其他补充请看这篇文章:stm32的抢占优先级和响应优先级(也叫子优先级)_stm32抢占优先级和子优先级概念-CSDN博客
中断思维导图
该思维导图来自正点原子官方下载的资料