分享

cc2530手册翻译(中断)

 xingwangjy 2014-12-24

1、中断源

CC2530的CPU有18个中断源,每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。每个中断请求都需要中断使能位来使能或禁止,具体定义如下表:

表1

Interrupt Number

中断号

Description

描述

Interrupt Name

中断名称

Interrupt Vector

中断向量

Interrupt Mask,CPU

中断屏蔽

Interrupt Flag, CPU

中断标志

0

RF TX FIFO underflow and RX FIFO overflow

射频发送队列空和接收队列溢出

RFERR

03h

IEN0.RFERRIE

TCON.RFERRIF (1)

1

ADC end of conversion

ADC转换完成

ADC

0Bh

IEN0.ADCIE

TCON.ADCIF (1)

2

USART 0 RX complete

串口0接收完毕

URX0

13h

IEN0.URX0IE

TCON.URX0IF (1)

3

USART 1 RX complete

串口1接收完毕

URX1

1Bh

IEN0.URX1IE

TCON.URX1IF (1)

4

AES encryption/decryption complete

AES加/解密完成

ENC

23h

IEN0.ENCIE

S0CON.ENCIF

5

Sleep Timer compare

睡眠定时器比较

ST

2Bh

IEN0.STIE

IRCON.STIF

6

Port 2 inputs/USB

端口2输入/USB

P2INT

33h

IEN2.P2IE

IRCON2.P2IF (2)

7

USART 0 TX complete

串口0发送完毕

UTX0

3Bh

IEN2.UTX0IE

IRCON2.UTX0IF

8

DMA transfer complete

DMA发送完成

DMA

43h

IEN1.DMAIE

IRCON.DMAIF

9

Timer 1 (16-bit) capture/compare/overflow

定时器1(16位)捕获/比较/溢出

T1

4Bh

IEN1.T1IE

IRCON.T1IF (1) (2)

10

Timer 2

定时器2(MAC定时器)

T2

53h

IEN1.T2IE

IRCON.T2IF (1) (2)

11

Timer 3 (8-bit) compare/overflow

定时器3(8位)比较/溢出

T3

5Bh

IEN1.T3IE

IRCON.T3IF (1) (2)

12

Timer 4 (8-bit) compare/overflow

定时器4(8位)比较/溢出

T4

63h

IEN1.T4IE

IRCON.T4IF (1) (2)

13

Port 0 inputs

端口0输入

P0INT

6Bh

IEN1.P0IE

IRCON.P0IF (2)

14

USART 1 TX complete

串口1发送完毕

UTX1

73h

IEN2.UTX1IE

IRCON2.UTX1IF

15

Port 1 inputs

端口1输入

P1INT

7Bh

IEN2.P1IE

IRCON2.P1IF (2)

16

RF general interrupts

RF通用中断

RF

83h

IEN2.RFIE

S1CON.RFIF (2)

17

Watchdog overflow in timer mode

看门狗计时溢出

WDT

8Bh

IEN2.WDTIE

IRCON2.WDTIF

(1) Hardware-cleared when interrupt service routine is called(当中断服务例程被调用后,硬件清除标志位)

(2) Additioal IRQ mask and IRQ flag bits exist.(附加中断屏蔽和中断标志位存在)

 

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)清除中断标志位(Clear interrupt flags);

(2)如果有,则设置SFR寄存器中对应的各中断使能位;

(3)设置寄存器IEN0、IEN1和IEN2中对应的中断使能位为1;

(4)设置全局中断位IEN0.EA为1;

(5)在该中断对应的向量地址上,运行该中断的服务程序。

 

       下图给出了所有中断源及其相关的控制和状态寄存器的概述图;当中断服务程序被执行后,阴影框的中断标志位将被硬件自动清除;

 

cc2530手册翻译(中断) - 虚幻代码 - 虚幻代码的博客

 3、中断处理

       当中断发生时,CPU就指向表1所描述的中断向量地址。一旦中断服务开始,就只能够被更高优先级的中断打断。中断服务程序由指令RETI终止,当执行RETI后,CPU将返回到中断发生时的下一条指令。

       当中断发生时,不管该中断使能或禁止,CPU都会在中断标志寄存器中设置中断标志位。当中断使能时,首先设置中断标志,然后在下一个指令周期,由硬件强行产生一个LCALL到对应的向量地址,运行中断服务程序。

       新中断的响应,取决于该中断发生时CPU的状态。当CPU正在运行的中断服务程序,其优先级大于或等于新的中断时,新的中断暂不运行,直至新的中断的优先级高于正在运行的中断服务程序。中断响应的时间取决于当前的指令,最快的为7个机器指令周期,其中1个机器指令周期用于检测中断,其余6个用来执行LCALL。

中断标志

寄存器

Bit位

名称

初始化

读/写

描述

TCON

7

URX1IF

0

R/W

H0

USART 1 RX中断标志。当中断发生时设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

USART 0 RX中断标志。当中断发生时设1,当CPU向量指向中断服务例程时清0。

0:无中断未决

1:中断未决

2

IT1

1

R/W

保留。必须一直设1。

1

RFERRIF

0

R/W

H0

RF TX/RX FIFO中断标志。当中断发生时设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

USART 1 TX中断标志

0:无中断未决

1:中断未决

1

UTX0IF

0

R/W

USART 0 TX中断标志

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

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多