CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。
STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。
STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。
STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个)
先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。
分组配置是在寄存器SCB->AIRCR中配置:
组 AIRCR[10:8] IP bit[7:4]分配情况 分配结果
0 111 0:4 0位抢占优先级,4位响应优先级
1 110 1:3 1位抢占优先级,3位响应优先级
2 101 2:2 2位抢占优先级,2位响应优先级
3 100 3:1 3位抢占优先级,1位响应优先级
4 011 4:0 4位抢占优先级,0位响应优先级
A B两个中断、分配为2:2 两个抢占优先级,连个响应优先级
A,B 先各有一个抢占优先级 可以从0-3设置 比如A为1 B为2 A可以打断B
响应优先级可以在抢占优先级相同的情况下进行配置
高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;
假定设置中断优先级组为2,然后设置
中断3(RTC中断)的抢占优先级为2,响应优先级为1。 中断6(外部中断0)的抢占优先级为3,响应优先级为0。中断7(外部中断1)的抢占优先级为2,响应优先级为0。
那么这3个中断的优先级顺序为:中断7>中断3>中断6。
一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如分组二。
确定抢占优先级响应优先级的设置
系统运行后先设置中断优先级分组。

本文介绍了STM32中断系统的结构,包括CM3内核的中断数量和STM32实际使用的中断数。重点讨论了STM32的中断分组、抢占优先级和响应优先级的配置方法,以及如何通过NVIC相关的寄存器进行中断的使能、失能、挂起和解挂操作。此外,还提到了中断优先级的设置及其对中断处理顺序的影响。
最低0.47元/天 解锁文章
1632

被折叠的 条评论
为什么被折叠?



