STM32中断优先级彻底讲解
STM32 中断优先级理解

CM3 内核支持256 个中断,其中包含了16 个内核中断和240 个外部中断,并且具有256级的可编程中断设置。
但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分。
STM32 有84 个中断,包括16 个内核中断和68 个可屏蔽中断,具有16 级可编程的中断优先级。
而我们常用的就是这68 个可屏蔽中断,但是STM32 的68 个可屏蔽中断,在STM32F103 系列上面,又只有60 个(在107 系列才有68 个)。
在MDK 内,与NVIC 相关的寄存器,MDK 为其定义了如下的结构体:点击(此处)折叠或打开1.typedef struct2.{3.vu32 ISER[2];4.u32 RESERVED0[30];5.vu32 ICER[2];6.u32 RSERVED1[30];7.vu32 ISPR[2];8.u32 RESERVED2[30];9.vu32 ICPR[2];10.u32 RESERVED3[30];11.vu32 IABR[2];12.u32 RESERVED4[62];13.vu32 IPR[15];14.} NVIC_TypeDef;STM32 的中断在这些寄存器的控制下有序的执行的。
只有了解这些中断寄存器,才能了解STM32 的中断。
下面简要介绍这几个寄存器:ISER[2]:I SER 全称是:Interrupt Set-Enable Registers,这是一个中断使能寄存器组。
上面说了STM32F103 的可屏蔽中断只有60 个,这里用了 2 个32 位的寄存器,总共可以表示64 个中断。
而STM32F103 只用了其中的前60 位。
ISER[0]的bit0~bit31 分别对应中断0~31。
ISER[1]的bit0~27 对应中断32~59;这样总共60 个中断就分别对应上了。
你要使能某个中断,必须设置相应的ISER 位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO 口映射等设置才算是一个完整的中断设置)。
STM32F4——NVIC中断优先级及外部中断

STM32F4——NVIC中断优先级及外部中断NVIC 中断优先级一、简介:CM4 内核可以支持256 个中断,包括16 个内核中断和240 个外部中断,256 级的可编程中断设置。
对于STM32F4 没有用到CM4 内核的所有东西,只是用到了一部分,对于STM32F40 和41 系列共有92 个中断,其中有10 个内核中断和82 个可屏蔽中断,常用的为82 个可屏蔽中断。
二、相关寄存器:ISER[8]中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82 个可屏蔽的中断,因此利用ISER[0~2]这三个32 位寄存器就够了。
一下的几个寄存器同理。
ICER[8]中断除能寄存器组,用来消除中断。
ISPR[8]中断挂起控制寄存器组,用来挂起中断。
ICPR[8]中断解挂控制寄存器组,用来解除挂起。
IABR[8]中断激活标志寄存器组,对应位如果为1 则表示中断正在被执行。
IP[240]中断优先级控制寄存器组,它是用来设置中断优先级的。
我们只用到了IP[0]~IP[81],每个寄存器只用到了高4 位,这4 位又用来设置抢占优先级和响应优先级(有关抢占优先级和响应优先级后面会介绍到),而对于抢占优先级和响应优先级各占多少位则由AIRCR 寄存器控制,相关设置如下图所示:关于抢占优先级和响应优先级的理解,可以将它们简单的理解为两个级别,抢占优先级的级别要比响应优先级的级别高,简单的理解为一个为长辈的一个为晚辈的,晚辈要让着长辈,因此抢占优先级的中断可以打断响应优先级的中断,而同级别的中断就得有个先来后到的了,先来的先执行。
三、相关库函数应用1、中断优先级分组函数:voidNVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),用来设置设置中断优。
STM32的中断优先级别理解20210524

STM32的中断优先级别理解20210524
理解:
1、STM32 总共有4个bit⽤来描述中断的种类,4个bit⼀共有5种组合【抢占式优先级别+副优先级(响应优先级)】,分组就决定了抢占优先级占⽤的bit数。
组0也就是表⽰0个bit为抢占优先级。
2、抢占式优先级别⾼的可以打断低优先级别的⼯作,相同抢占优先级的不能相互打断。
3、副优先级⾼的中断来临是,序号低的优先处理【响应】。
前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):
NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4
前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别
前提条件3:同⼀组优先级别中,不同的抢占级别之间,其中⼀抢占级别正在做事,另外抢占级别不能打断他;(即”同⼀组优先级下的中断源间,没有中断嵌套“)
前提条件4:不同组优先级别间,依据优先级强弱,优先级别⾼的组的中断源可以打断优先级别低的组的正在做的事情;(即:不同组优先级间,可以中断嵌套)
对于上⾯的理解:
STM32中,每个设备都可以配置不同的中断组,抢占优先级,响应优先级。
具体举例:
项⽬需要2个串⼝,但是不是两个串⼝同时使⽤,只是随机使⽤其中⼀个,程序对2个串⼝的优先级需要配置;
要求两个串⼝⼯作的时候不能相互打断,最好也不鞥你被其他程序打断,那么可以把2个串⼝都设置成 NVIC_PriorityGroup_0 分组0【0个bit表⽰抢占优先级】,副优先级可以分别设置为1,2。
STM32日记之1——NVIC优先级概念

STM32(Cortex-M3)中的优先级概念STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位可以有8种分配方式,如下:所有8位用于指定响应优先级最高1位用于指定抢占式优先级,最低7位用于指定响应优先级最高2位用于指定抢占式优先级,最低6位用于指定响应优先级最高3位用于指定抢占式优先级,最低5位用于指定响应优先级最高4位用于指定抢占式优先级,最低4位用于指定响应优先级最高5位用于指定抢占式优先级,最低3位用于指定响应优先级最高6位用于指定抢占式优先级,最低2位用于指定响应优先级最高7位用于指定抢占式优先级,最低1位用于指定响应优先级这就是优先级分组的概念。
-------------------------------------------------------------------------------- Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级第4组:所有4位用于指定抢占式优先级可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种:NVIC_PriorityGroup_0 => 选择第0组NVIC_PriorityGroup_1 => 选择第1组NVIC_PriorityGroup_2 => 选择第2组NVIC_PriorityGroup_3 => 选择第3组NVIC_PriorityGroup_4 => 选择第4组接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:// 选择使用优先级分组第1组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);// 使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);// 使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);-------------------------------------------------------------------------------- 要注意的几点是:1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;2)抢占式优先级别相同的中断源之间没有嵌套关系;3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。
STM32中断优先级

STM32抢占优先级、响应优先级的详细讲解说明:stm32的优先级以寄存器的4位数据来表示的,因此2^4=16只能表示16级中断嵌套。
如上图所示:NVIC_PriotityGroup_0:即4位全部用于响应优先级(子优先级);因此,抢占优先级0级中断嵌套;响应优先级共有16即0—15级中断嵌套;NVIC_PriotityGroup_1:即1位用于响应优先级,3位用于响应优先级;因此,抢占优先级0下面共有2^3=8级中断嵌套;抢占优先级1下面共有2^3=8级中断嵌套;NVIC_PriotityGroup_2:即2位用于响应优先级,2位用于响应优先级;因此,抢占优先级总共有2^2=4个分别为:抢占优先级0至3且每个抢占优先级下面都有2^2=4个响应优先级。
NVIC_PriotityGroup_3:即3位用于响应优先级,1位用于响应优先级;因此,抢占优先级总共有2^3=8个分别为:抢占优先级0至7且每个抢占优先级下面都有2^1=2个响应优先级。
类似的,NVIC_PriotityGroup_4:即4位用于响应优先级,0位用于响应优先级;因此,抢占优先级16即0—15优先级中断嵌套;响应优先级共有0级中断嵌套;注意:响应优先级相等时,抢占优先级越小,中断级别越高抢占优先级相等时,响应优先级越小,中断级别越高举个栗子:void NVIC_Config(void){NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//NVIC_PriorityGroup_2即表明抢占优先级可有0—3级中断嵌套;响应优先级可设0—3级中断嵌套。
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//配置串口中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPrior ity = 0;//0即表明抢占优先级0;即为NVIC_PriorityGroup_2抢占优先0—3级中级别最高的优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//0即表明响应优先级0;即为NVIC_PriorityGroup_2响应优先0—3级中级别最高的优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}总结:如上程序中串口1中断抢占优先级0,响应优先级0;其即为NVIC_PriorityGroup_2中中断优先级别最高,能够打断其它正在执行的中断。
STM32中断中设置的先占式优先级与从优先级

STM32中断中设置的先占式优先级与从优先级STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位可以有8种分配方式,如下:所有8位用于指定响应优先级最高1位用于指定抢占式优先级,最低7位用于指定响应优先级最高2位用于指定抢占式优先级,最低6位用于指定响应优先级最高3位用于指定抢占式优先级,最低5位用于指定响应优先级最高4位用于指定抢占式优先级,最低4位用于指定响应优先级最高5位用于指定抢占式优先级,最低3位用于指定响应优先级最高6位用于指定抢占式优先级,最低2位用于指定响应优先级最高7位用于指定抢占式优先级,最低1位用于指定响应优先级这就是优先级分组的概念。
--------------------------------------------------------------------------------Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级第4组:所有4位用于指定抢占式优先级可以通过调用STM32的固件库中的函数选择使用哪种优先级分组方式,这个函数的参数有下列5种: NVIC_PriorityGroup_0 => 选择第0组NVIC_PriorityGroup_1 => 选择第1组NVIC_PriorityGroup_2 => 选择第2组NVIC_PriorityGroup_3 => 选择第3组NVIC_PriorityGroup_4 => 选择第4组接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:// 选择使用优先级分组第1组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);// 使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);// 使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;NVIC_Init(&NVIC_InitStructure);--------------------------------------------------------------------------------要注意的几点是:1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;2)抢占式优先级别相同的中断源之间没有嵌套关系;3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。
STM32中断优先级彻底讲解

STM32中断优先级彻底讲解stm32目前支持的中断共为84个(16个内核+68个外部),16级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。
二:优先级推论stm32(cortex-m3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具备低抢占市场式优先级的中断可以在具备高抢占市场式优先级的中断处理过程中被积极响应,即为中断嵌套,或者说低抢占市场式优先级的中断可以嵌套高抢占市场式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序同意先处置哪一个。
三:优先级分组既然每个中断源都须要被选定这两种优先级,就须要存有适当的寄存器位记录每个中断的优先级;在cortex-m3中定义了8个比特位用作设置中断源的优先级,这8个比特位在nvic应用领域中断与登位掌控递丛器(aircr)的中断优先级分组域中,可以存有8种分配方式,如下:所有8位用于指定响应优先级最低1十一位用作选定抢占市场式优先级,最高7十一位用作选定积极响应优先级最低2十一位用作选定抢占市场式优先级,最高6十一位用作选定积极响应优先级最低3十一位用作选定抢占市场式优先级,最高5十一位用作选定积极响应优先级最低4十一位用作选定抢占市场式优先级,最高4十一位用作选定积极响应优先级最低5十一位用作选定抢占市场式优先级,最高3十一位用作选定积极响应优先级最低6十一位用作选定抢占市场式优先级,最高2十一位用作选定积极响应优先级最低7十一位用作选定抢占市场式优先级,最高1十一位用作选定积极响应优先级这就是优先级分组的概念。
Stm32中断优先级相关概念与使用笔记

Stm32中断优先级相关概念与使用笔记一、基本概念1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置,与中断控制核中断优先级控制的寄存器(NVIC、SYSTICK等)属于cortex_m3内核的部分。
STM32采用了cortex_m3内核,所以这些部分仍旧保留使用,但并不是完全使用的,只是使用了一部分。
2.STM32目前支持的中断共为84个(16个内核+68个外部),和16级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位,见后面解释)。
《参考最新101xx-107xx STM32 Reference manual, RM0008》。
以下主要对外部中断进行说明。
3.68个外部中断(通道)在STM32中已经固定的分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但在STM32中只有高4位有效),每4个通道的8位中断优先级控制字(PRI_n)构成一个32位的优先级寄存器(Priority Register)。
68个通道的优先级寄存器至少有是17个32位的寄存器,它们是NVIC寄存器的一部分。
4.这4bit的中断优先级控制位还要分成2组看,从高位开始,前面的定义抢先式优先级,5.在一个系统中,通常只使用上面5种分配情况的一种,具体采用哪一种,需要在初始化时写入到一个32位寄存器AIRC(Application Interrupt and Reset Control Register)的第[10:8]这2个位中。
这3个bit位有专门的称呼:PRIGROUP(具体写操作后面介绍)。
比如你将0x05(上表的编号)写到AIRC的[10:8]中,那么也就规定了你的系统中只有4个抢先式优先级,相同的抢先式优先级下还可以有4个不同级别的子优先级。
6.AIRC中PRIGROUP的值规定了设置和确定每个外部中断通道优先级的格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32中断优先级彻底讲解
一:综述
STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级
的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。
二:优先级判断
STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序
决定先处理哪一个。
三:优先级分组
既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位在NVIC应用中断与复位控制寄丛器(AIRCR)的中断优先级分组域中,可以有8种分配方式,如下:
所有8位用于指定响应优先级
最高1位用于指定抢占式优先级,最低7位用于指定响应优先级
最高2位用于指定抢占式优先级,最低6位用于指定响应优先级
最高3位用于指定抢占式优先级,最低5位用于指定响应优先级
最高4位用于指定抢占式优先级,最低4位用于指定响应优先级
最高5位用于指定抢占式优先级,最低3位用于指定响应优先级
最高6位用于指定抢占式优先级,最低2位用于指定响应优先级
最高7位用于指定抢占式优先级,最低1位用于指定响应优先级
这就是优先级分组的概念。
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位(AIRCR高四位),这4个寄存器位的分组方式如下:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级
可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种:
NVIC_PriorityGroup_0 => 选择第0组
NVIC_PriorityGroup_1 => 选择第1组
NVIC_PriorityGroup_2 => 选择第2组
NVIC_PriorityGroup_3 => 选择第3组
NVIC_PriorityGroup_4 => 选择第4组
中断优先级分组是为了给抢占式优先级和响应优先级在中断优先级寄丛器的高四位分配各个优先级数字所占的位数。
在一个程序中只能设定一次
四:中断源的优先级
接下来就是指定中断源的优先级,中断源优先级是在中断优先级寄存器中设置的,只能设置及高四位,必须根据中断优先级分组中设置好的位数来在该寄存器中设置相应的数值。
假如你选择中断优先级分组的第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级,那么抢占式优先级就有000-111共八种数据选择,也就是有八个中断嵌套,而响应优先级中有0和1两种,总共有8*2=16种优先级。
中断源优先级具体的设置了该中断源的优先级别
在一个程序中可以设定多个(最多16个)
优先级,每个中断源只能设定的一个。
每写一个关于中断优先级的程序必须包含下列两个函数:
(1)void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)中断分组设置
(2)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)中断优先级设置。