CC2530中断源.docx
- 文档编号:11515981
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:19
- 大小:216.32KB
CC2530中断源.docx
《CC2530中断源.docx》由会员分享,可在线阅读,更多相关《CC2530中断源.docx(19页珍藏版)》请在冰豆网上搜索。
CC2530中断源
1、中断源
CC2530的CPU有18个中断源,每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。
每个中断请求都需要中断使能位来使能或禁止,具体定义如下表:
表1
InterruptNumber
中断号
Description
描述
InterruptName
中断名称
InterruptVector
中断向量
InterruptMask,CPU
中断屏蔽
InterruptFlag,CPU
中断标志
0
RFTXFIFOunderflowandRXFIFOoverflow
射频发送队列空和接收队列溢出
RFERR
03h
IEN0.RFERRIE
TCON.RFERRIF
(1)
1
ADCendofconversion
ADC转换完成
ADC
0Bh
IEN0.ADCIE
TCON.ADCIF
(1)
2
USART0RXcomplete
串口0接收完毕
URX0
13h
IEN0.URX0IE
TCON.URX0IF
(1)
3
USART1RXcomplete
串口1接收完毕
URX1
1Bh
IEN0.URX1IE
TCON.URX1IF
(1)
4
AESencryption/decryptioncomplete
AES加/解密完成
ENC
23h
IEN0.ENCIE
S0CON.ENCIF
5
SleepTimercompare
睡眠定时器比较
ST
2Bh
IEN0.STIE
IRCON.STIF
6
Port2inputs/USB
端口2输入/USB
P2INT
33h
IEN2.P2IE
IRCON2.P2IF
(2)
7
USART0TXcomplete
串口0发送完毕
UTX0
3Bh
IEN2.UTX0IE
IRCON2.UTX0IF
8
DMAtransfercomplete
DMA发送完成
DMA
43h
IEN1.DMAIE
IRCON.DMAIF
9
Timer1(16-bit)capture/compare/overflow
定时器1(16位)捕获/比较/溢出
T1
4Bh
IEN1.T1IE
IRCON.T1IF
(1)
(2)
10
Timer2
定时器2(MAC定时器)
T2
53h
IEN1.T2IE
IRCON.T2IF
(1)
(2)
11
Timer3(8-bit)compare/overflow
定时器3(8位)比较/溢出
T3
5Bh
IEN1.T3IE
IRCON.T3IF
(1)
(2)
12
Timer4(8-bit)compare/overflow
定时器4(8位)比较/溢出
T4
63h
IEN1.T4IE
IRCON.T4IF
(1)
(2)
13
Port0inputs
端口0输入
P0INT
6Bh
IEN1.P0IE
IRCON.P0IF
(2)
14
USART1TXcomplete
串口1发送完毕
UTX1
73h
IEN2.UTX1IE
IRCON2.UTX1IF
15
Port1inputs
端口1输入
P1INT
7Bh
IEN2.P1IE
IRCON2.P1IF
(2)
16
RFgeneralinterrupts
RF通用中断
RF
83h
IEN2.RFIE
S1CON.RFIF
(2)
17
Watchdogoverflowintimermode
看门狗计时溢出
WDT
8Bh
IEN2.WDTIE
IRCON2.WDTIF
(1)Hardware-clearedwheninterruptserviceroutineiscalled(当中断服务例程被调用后,硬件清除标志位)
(2)AdditioalIRQmaskandIRQflagbitsexist.(附加中断屏蔽和中断标志位存在)
2、中断屏蔽
每个中断通过IEN0、IEN1、IEN2里的相应中断使能位来禁止或启用,具体如下表。
中断使能寄存器(IEN0,IEN1,IEN2)(0:
中断禁止 1:
中断使能)
表2
端口
Bit位
名称
初始化
读/写
描述
IEN0
7
EA
0
R/W
禁止所有中断
0:
无中断被确认。
1:
通过设置对应的使能位,将每个中断源分别使能或禁止。
6
–
0
R0
不使用,读取为0值
5
STIE
0
R/W
睡眠定时器中断使能
4
ENCIE
0
R/W
AES加解密中断使能
3
URX1IE
0
R/W
串口1接收中断使能
2
URX0IE
0
R/W
串口0接收中断使能
1
ADCIE
0
R/W
ADC中断使能
0
RFERRIE
0
R/W
RF接收/发送队列中断使能
IEN1
7:
6
–
00
R0
不使用,读取为0值
5
P0IE
0
R/W
端口0中断使能
4
T4IE
0
R/W
定时器4中断使能
3
T3IE
0
R/W
定时器3中断使能
2
T2IE
0
R/W
定时器2中断使能
1
T1IE
0
R/W
定时器1中断使能
0
DMAIE
0
R/W
DMA传输中断使能
IEN2
7:
6
–
00
R0
不使用,读取为0值
5
WDTIE
0
R/W
看门狗中断使能
4
P1IE
0
R/W
端口1中断使能
3
UTX1IE
0
R/W
串口1中断使能
2
UTX0IE
0
R/W
串口0中断使能
1
P2IE
0
R/W
端口2中断使能
0
RFIE
0
R/W
RF通用中断使能
注意某些外部设备会因为若干事件产生中断请求。
这些中断请求可以作用在端口0、端口1、端口2、定时器1、定时器2、定时器3、定时器4或者无线上。
这些外部设备在相应的寄存器里都有一个内部中断源的中断屏蔽位。
为了启用中断,需要以下步骤:
(1)清除中断标志位(Clearinterruptflags);
(2)如果有,则设置SFR寄存器中对应的各中断使能位;
(3)设置寄存器IEN0、IEN1和IEN2中对应的中断使能位为1;
(4)设置全局中断位IEN0.EA为1;
(5)在该中断对应的向量地址上,运行该中断的服务程序。
下图给出了所有中断源及其相关的控制和状态寄存器的概述图;当中断服务程序被执行后,阴影框的中断标志位将被硬件自动清除;
3、中断处理
当中断发生时,CPU就指向表1所描述的中断向量地址。
一旦中断服务开始,就只能够被更高优先级的中断打断。
中断服务程序由指令RETI终止,当执行RETI后,CPU将返回到中断发生时的下一条指令。
当中断发生时,不管该中断使能或禁止,CPU都会在中断标志寄存器中设置中断标志位。
当中断使能时,首先设置中断标志,然后在下一个指令周期,由硬件强行产生一个LCALL到对应的向量地址,运行中断服务程序。
新中断的响应,取决于该中断发生时CPU的状态。
当CPU正在运行的中断服务程序,其优先级大于或等于新的中断时,新的中断暂不运行,直至新的中断的优先级高于正在运行的中断服务程序。
中断响应的时间取决于当前的指令,最快的为7个机器指令周期,其中1个机器指令周期用于检测中断,其余6个用来执行LCALL。
中断标志
寄存器
Bit位
名称
初始化
读/写
描述
TCON
7
URX1IF
0
R/W
H0
USART1RX中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
6
–
0
R/W
不使用
5
ADCIF
0
R/W
H0
ADC中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
4
–
0
R/W
不使用
3
URX0IF
0
R/W
H0
USART0RX中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
2
IT1
1
R/W
保留。
必须一直设1。
1
RFERRIF
0
R/W
H0
RFTX/RXFIFO中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
0
IT0
1
R/W
保留。
必须一直设1。
S0CON
7:
2
–
000000
R/W
不使用
1
ENCIF_1
0
R/W
AES中断。
ENC有两个中断标志位,ENCIF_1和ENCIF_0。
设置其中一个标志就好请求中断服务。
当AES协处理器请求中断时,两个标志都有设置。
0:
无中断未决
1:
中断未决
0
ENCIF_0
0
R/W
AES中断。
ENC有两个中断标志位,ENCIF_1和ENCIF_0。
设置其中一个标志就好请求中断服务。
当AES协处理器请求中断时,两个标志都有设置。
0:
无中断未决
1:
中断未决
S1CON
7:
2
–
000000
R/W
不使用
1
RFIF_1
0
R/W
RF一般中断。
RF有两个中断标志,RFIF_1和RFIF_0,设置其中一个标志就会请求中断服务。
当无线电请求中断时两个标志都有设置。
0:
无中断未决
1:
中断未决
0
RFIF_0
0
R/W
RF一般中断。
RF有两个中断标志,RFIF_1和RFIF_0,设置其中一个标志就会请求中断服务。
当无线电请求中断时两个标志都有设置。
0:
无中断未决
1:
中断未决
IRCON
7
STIF
0
R/W
睡眠定时器中断标志位
0:
无中断未决
1:
中断未决
6
--
0
R/W
必须一直设0。
5
P0IF
0
R/W
端口0中断标志
0:
无中断未决
1:
中断未决
4
T4IF
0
R/W
H0
定时器4中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
3
T3IF
0
R/W
H0
定时器3中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
2
T2IF
0
R/W
H0
定时器2中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
1
T1IF
0
R/W
H0
定时器1中断标志。
当中断发生时设1,当CPU向量指向中断服务例程时清0。
0:
无中断未决
1:
中断未决
0
DMAIF
0
R/W
DMA完成中断标志
0:
无中断未决
1:
中断未决
IRCON2
7:
5
–
000
R/W
不使用
4
WDTIF
0
R/W
看门狗定时器中断标志
0:
无中断未决
1:
中断未决
3
P1IF
0
R/W
端口1中断标志
0:
无中断未决
1:
中断未决
2
UTX1IF
0
R/W
USART1TX中断标志
0:
无中断未决
1:
中断未决
1
UTX0IF
0
R/W
USART0TX中断标志
0:
无中断未决
1:
中断未决
0
P2IF
0
R/W
端口2中断标志
0:
无中断未决
1:
中断未决
4、中断优先级
中断可划分为6个中断优先组,每组的优先级通过设置寄存器IP0和IP1来实现。
为了给中断(也就是它所在的中断优先组)赋值优先级,需要设置IP0和IP1的对应位。
表4-1
端口
Bit位
名称
初始化
读/写
描述
IP1
7:
6
--
00
R/W
没使用
5
IP1_IPG5
0
R/W
中断第5组,优先级控制位1,参考表4-3
4
IP1_IPG4
0
R/W
中断第4组,优先级控制位1,参考表4-3
3
IP1_IPG3
0
R/W
中断第3组,优先级控制位1,参考表4-3
2
IP1_IPG2
0
R/W
中断第2组,优先级控制位1,参考表4-3
1
IP1_IPG1
0
R/W
中断第1组,优先级控制位1,参考表4-3
0
IP1_IPG0
0
R/W
中断第0组,优先级控制位1,参考表4-3
IP0
7:
6
--
00
R/W
没使用
5
IP0_IPG5
0
R/W
中断第5组,优先级控制位0,参考表4-3
4
IP0_IPG4
0
R/W
中断第4组,优先级控制位0,参考表4-3
3
IP0_IPG3
0
R/W
中断第3组,优先级控制位0,参考表4-3
2
IP0_IPG2
0
R/W
中断第2组,优先级控制位0,参考表4-3
1
IP0_IPG1
0
R/W
中断第1组,优先级控制位0,参考表4-3
0
IP0_IPG0
0
R/W
中断第0组,优先级控制位0,参考表4-3
表4-2优先级设置
IP1_X
IP0_X
优先级
0
0
0–最低级别
0
1
1
1
0
2
1
1
3–最高级别
中断优先级及其赋值的中断源显示在表4-3中,每组赋值为4个中断优先级之一。
当进行中断服务请求时,不允许被同级或较低级别的中断打断。
表4-3中断优先组
组
中断
IPG0
PEERR
RF
DMA
IPG1
ADC
T1
P2INT
IPG2
URX0
T2
UTX0
IPG3
URX1
T3
UTX1
IPG4
ENC
T4
P1INT
IPG5
ST
P0INT
WDT
当同时收到几个相同优先级的中断请求时,采用表4-4所列的轮流检测顺序来判定哪个中断优先响应。
表4-4中断轮流检测顺序
中断向量编号
中断名称
0
RFERR
轮流检测顺序
↓
16
RF
8
DMA
1
ADC
9
T1
2
URX0
10
T2
3
URX1
11
T3
4
ENC
12
T4
5
ST
13
P0INT
6
P2INT
7
UTX0
14
UTX1
15
P1INT
17
WDT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC2530 中断
![提示](https://static.bdocx.com/images/bang_tan.gif)