标签:端口 开头 inter 决定 函数 方向 优先级 cc2530 icon
cc2530的CPU有18个中断源,每个中断都可以分别使能和控制。
18个中断源分为6个组,每一组有3个中断源,中断优先级可以通过配置相应寄存器来实现
中断源的分组
编号 中断
中断优先级是由寄存器IP0和IP1来实现的,IP1_X IP0_x表示的数字约大,优先级越高
IP1_X与IP0_X中的X代表了中断优先级组的组名,即IPG0~IPG5,设置优先级时3的优先级最高,0的优先级最低
例:
//设置IPG3的优先级别最高
IP1_IPG3=1;
IP0_IPG3=1;
//设置IPG0的优先级别最低
IP1_IPG1=0;
IP1_IPG0=0
如果在同一个组中的优先级同时发生,会有一个先后,决定这个先后顺序的就是中断轮流探测顺序。(书中有一个表,先不放了,在书上的P.59)
通用I/O设置为输入后,可以用于产生中断,并且通用I/O中断还可以设置其触发方式,在设置中断时需要将发生中断引脚的使能位置置为1,端口使能位设置寄存器:
中断使能寄存器IEN1控制P0端口,定时器1~4和DMA中断的使能和禁止,如果需要某一位中断使能,只需将IEN1中对应的位设置为1即可。
IEN1中断设置
//设置P0端口中断使能
IEN1 |= 0x20;
IEN2中断设置
//设置P1和P2端口中断使能
IEN2|=0x12;
IEN1使能寄存器可以控制P0端口中断使能,IEN2中断寄存器可以控制P1端口和P2端口中断使能。
//设置P0_5中断使能
P0IEN |= 0x20;
//设置P0端口中断使能
IEN1 |= 0x20;
//设置P0_5下降沿触发中断
PICTL |= 0x01;
//打开总中断
EA=1;
I/O中断发生后,中断标志寄存器相应位会自动置为1
//判断端口P0是否发生中断
if(P0IFG>0)
{
}
//判断P0_5是否发生中断
if(P0IFG&0x20)
{
;
}
设置中断要从小的向大的方向设置,先从引脚,再到端口,再到总中断
#pragma vector=<中断向量>
__interrupt void <函数名称>(void) //这里的开头是两个下划线
{
//函数体
}
标签:端口 开头 inter 决定 函数 方向 优先级 cc2530 icon
原文地址:https://www.cnblogs.com/longbaoshushu/p/12072532.html