1、在分析中断优先级配置之前,首先简单了解标准MCS-51的中断系统,对于标准8051内核而言,有5个中断源,INT0、INT1、UART、Time0、Timer1,可以通过中断优先级控制器IP(B8H)来设置优先级,分为二级优先级,默认情况下所有中断源都处于同级最低优先级,即常说的自然优先级。
2、查看cc2530芯片说明书,可以看到芯片有18个中断源,每个中断源都在特殊标志寄存器(SFR)中有对应标志位,可以使能/禁止中断标志位。
3、中断源会根据选择的优先级水平而被分配到优先组中,每个中断可以独立使能/禁止,通过IEN0、IEN1、IEN2寄存器控制。如下所示,即为2530芯片所有的中断源及其中断向量号:
4、值得注意的是,和标准的8051单片机一样,51内核可以通过控制EA位来开启/关闭系统总中断。与标准8051内核相比,2530增加的中断源带来的是优先级的判定与裁决机制,基本处理机制就是:中断使能情况下,优先级低的中断可以被高优先级的中断打断,也就是说比如低的优先级中断进入中断服务程序后,如果在退出中断服务之前发生更高优先级中断,那么单片机会先处理高优先级的程序,直到高的优先级处理完毕之后才转回处理低优先级程序。简单来说,就是中断处理是抢占式的中断机理。
5、在默认复位情况下,单片机的中断源优先级是自然优先级排列,所有中断源都处于最低优先级,按照如下的中断次序依次扫描,当有中断标志位置位时,内核就转去处理,如下所示即为自然优先级下扫描次序:
6、在优先级处理时,共18个中断源每3个中断源分为一组,共6组优先级组,通过IP0、IP1寄存器来配置每组中断源的优先级,其中00为最低,11为最高优先级,如下所示:
7、如下所示,如果要自定义优先级,可以通过豹肉钕舞设置IP0与IP1来设置每组的优先级,从而改变中断处理机制,比如可以通过IPx设置,使得霸烹钟爷P2口外部中断优先级高于UART0发送或接受中断优先级。/*************************************************** * Interrupt priority: * Group 0 highest, Group 1 second,Group 5 next * ***************************************************/ IP0 |= (1<<0)|(1<<5); IP1 |= (1<<0)|(1<<1);