这个是很好理解的,看第一张彩色图就可以了,可能写书的人已经精通了STM32,所以,可能觉得这个太好理解了,就没有细说 这里只说STM32的M3,别的不说,理解就好 先说优先级组合,中断优先级组合只能有0-4这5个组合 因为它只用了4个位来控制中断的优先级(抢占级和副优先级),4个位最大数就是1111=15 所以: 在0组合的时候,抢占级为0,4个位都可以给副优先级进行级别设置,这个时候:抢占等级就只有一个级别:0级 副优先级就有0-15一共是16个级别 1组合的时候,抢占等级用一个位来设置,那么,就有了0-1一共两个级别可能设置 副优先级就只有3个位,就有0-7一共是8个级别可以设置了 其它级别自己分析了 抢占等级决定了它能不能打断其它中断 优先等级是在多个中断同时触发时的优先处理权,优级等级没有打断的权力,只有优先权力,只有在多个中断同时触发时才会用到 如果是相同级别的抢占等级一个低优先等级中断正在执行,这个里又来了一个更高级别的优先等级中断,那么,这个中断只能挂起(意思就是干等着),等到前面的处理完了,才会来处理这个中断 |
假设你就是CPU,你如何判定谁更高级呢? 一定要有个判定的依据,最好给它们排个序,总要给它们按个序号吧。 用AIRC[10:8]排序如何?够不够用,3位最多只能8个,而中断不止8个,看来不够。 那就再加吧?加上IPR[7:4]如何?够不够用,又增4位,共7位,最多只能128个…… 明白了吗? |