(完整版)cc2530常用寄存器讲解
- 格式:docx
- 大小:38.83 KB
- 文档页数:9
一. CC2530控制外设的基本方法(通用 I/O 口)
CC2530的 I/O 控制口一共有 21 个,分成 3 组,分别是 P0、 P1和 P2;由上面的对照表
可以看出 LED1所对应的 I/O 口为 P1_0, LED2所对应的 I/O 口为 P1_1,LED3所对应的
I/O 口为 P1_4,LED4所对应的 I/O 为 P0_1。
相对应的常用 SFR有:
P1DIR(P1方向寄存器, P0DIR同理): 0:输入 1:输出
D7
D6
D5 D4 D3 D2 D1 D0
P0_7 方
向 P0 向6方 P0_5 方
向 P0_4 方
向 P0_3 方
向 P0_2 方
向 P0_1 方
向 P0_0 方
向
P1SEL(P1 功能选择寄存器, P0SEL同理):
D D 5 D D 3 D D 1 D 0 D
功 的 7
1 P 功 的 6
1 P 功 的 5 P1 功 的 4
1 P 功 的 3
1 P 功 的 2
1 P 功 的 1
1 P 功 的 0
1 P
能 能 能 能 能 能 能 能
通
普 0 通
普 0 通
普 0 通
普 0 通
普 0 通
普 0 通
普 0 通
普 0
O O O O O O O O
功 设 外 1 功 设 外 1 功 设 外 1 功 设 外 1 功 设 外 1 功 设 外 1 功 设 外 1 功 设 外 1
能 能 能 能 能 能 能 能
P0SEL(P1SEL相同):各个 I/O 口的功能选择, 0 为普通 I/O 功能,1 为外设功
P2SEL:( D0到 D2位)端口 2 功能选择和端口 1 外设优先级控制 什么是外设优先级:当 PERCFG分配两个外设到相同的引脚时,需要设置这两个 外设的优先级,确定哪一个外设先被响应
D7 D6 D5 D4 D3 D2 D1 D0
未
用 0 :
USART
0 优先
1 :
USART
1 优先 0 :
USART
1 优先
1 : 定时器
3 优先 0: 定
时器 1
优 先
1 : 定时 器 4
优先 0:USART
0 优先
1 : 定时器
1 优先 P2_4 功
能选择 P2_3 功
能选择 P2_0 功
能选择
P0DIR(P1DIR相同):设置各个 I/O 的方向, 0 为输入, 1 为输出
D7 D6 D5 D4 D3 D2 D1 D0
P0_7 方 P0_6 方 P0_5 方 P0_4 方 P0_3 方 P0_2 方 P0_1 方 P0_0 方
向 向 向 向 向 向 向 向
P2DIR : D0~D4设置 P2_0到 P2_4 的方向
D7、D6位作为端口 0 外设优先级的控制
D7
D 6 D5 D4 D3 D2 D1 D0
X X 未使用 P2 4 方向 P2 3 方向 P2 2 方向 P2 1 方向 P2 0 方向
D7D6 意义
00 第1 优先级: USART 0
第 2 优先级: USART 1
第 3 优先级:定时器 1
01 第 1 优先级: USART 1
第 2 优先级: USART 0
第 3 优先级:定时器 1
10
第 1 优先级:定时器 1 通道 0-1 第 2 优先级: USART 1 第 3 优先级: USART 0 第4优先级:定时器 1 通道2 –3
11
第 1 优先级:定时器 1 通道 2-3 第 2 优先级: USART 0 第 3 优先级: USART 1 第4优先级:定时器 1 通道0 –1
寄存器的设置: 将控制寄存器的某一位置 1: 例: P1DIR |= 0X02 ;
解释:” |= “表示按位或运算, 0X02为十六进制数,转换成二进制数为 0000 0010 ,若 P1DIR 原来的值为 0011 0000 ,或运算后 P1DIR 的值为 0011 0010 。根据上面给出的取值表可知,按位 与运算后
P1_1 的方向改为输出,其他 I/O 口方向保持不变。
将控制寄存器某一位清 0:
例: P1DIR &= ~0X02 ;
解释:”&=“表示按位与运算, ”~“运算符表示取反, 0X02为 0000 0010,即~0X02为 1111 1101
若 P1DIR 原来的值为 0011 0010 ,与运算后 P1DIR 的值为 0011 0000 。
二.通过中断控制 LED,如何捕获一个外部中断和 CC2530 捕获外部中断后的处理 流程
P0IEN(P1IEN相同): 各个控制口的中断使能, 0为中断禁止, 1 为中断使能。
D7 D6 D5 D4 D3 D2 D1 D0
P0_7 P0_6 P0_5 P0_4 P0_3 P0_2 P0_1 P0_0 P0INP(P1INP意义相似 ) :设置各个
I/O 口的输入模式, 0为上拉 /下拉, 1为三 态模式
D7 D6 D5 D4 D3 D2 D1 D0
需要注意的是: P1INP中,只有 D7~D2分别设置对应 I/O 口的输入模式。
D1D0
两位无作用。
PICTL:D0~D3设置各个端口的中断触发方式, 0 为上升沿触发, 1 为下降沿触
发。
D7 控制 I/O 引脚在输出模式下的驱动能力。 选择输出
驱动能力增强来补偿引脚 DVDD的低 I/O 电压,确保在较低的电压下的驱动能力
和较高电压下相同。 0 为最小驱动能力增强。 1为最大驱动能力增强。
D7 D6 D5 D4 D3 D2 D1 D0
I/O 驱动能力 未用 未用 未用 P2 0~P2 4 P1 4~P1 7 P 0~P1 3 P0 0 ~P0 7
IEN0:中断使能 0,0 为中断禁止, 1 为中断使能
D7 D6 D5 D4 D3 D2 D1 D0
总中
断 EA 未
用 睡眠定
时器中
断 AES 加密 /
解密中断 USART1 RX
中断 USART0 RX
中断 ADC 中断 RF TX/RF
FIFO 中断
IEN1:中断使能 1,0 为中断禁止, 1 为中断使能
D7 D6 D5 D4 D3 D2 D1 D0
未用 未用 端口 0 定时器 4 定时器 3 定时器 2 定时器 1 DMA 传输
P0IFG(P1IFG相同):中断状态标志寄存器,当输入端口有中断请求时,相应 的标志位将置 1。
D7 D6 D5 D4 D3 D2 D1 D0
P0_7 P0_6 P0_5 P0_4 P0_3 P0_2 P0_1 P0_0
P2INP: D0~D4控制 P2_0~P2_4的输入模式, 0为上拉/ 下拉,1 为三态;
D5~D7设置对 P0、P1 和 P2 的上拉或下拉
的选择。 0 为上拉, 1 为下拉;
7 D 6 D 5 D D 3 D D 1 D 0 D
选 0择 口 端 选 1择 口 端 选 2择 口
端 模 _4
式 2 模 _3
式 2 模 _2
式 2 模 2_1
式 2 模 _0
式 2
P2IFG:D0~D4为 P2_0~P2_4的中断标志位
D5为 USBD +中断状态标志,当 D+线有一个中断请求未决时设置
该标志,用于检测 USB挂起状态下的 USB恢复事件。当 USB控制器没有挂起时
不设置该标志。
D7 D6 D5 D4 D3 D2 D1 D0
未用 未用 USB D+ P2 4 P2 3 P2 2 P2 1 P2 0
P2IEN:D0~D4控制 P2_0~P2_4的中断使能
D5 控制 USB D+的中断使能
D7 D6 D5 D4 D3 D2 D1 D0
未用 未用 USB D+ P2 4 P2 3 P2 2 P2 1
P2 0
IEN2:中断使能 2,0 为中断禁止, 1 为中断使能
D7 D6 D5 D4 D3 D2 D1 D0
未用 未用 看门狗定时器 端口 1 USART1 TX
U SART0 TX 端口 2 RF 一般中断
CC2530中断机制:
① 当按键 S1按下时,因为 S1所对应的 I/O 口为 P0_1,所以 P0 端口将会发出一个中断请
求,并自动将 P0IFG 寄存器对应位(即 D1位)置 1,等待 CPU响应。
② CPU 在执行完一条指令之后就会检测是否有中断请求,如果检测到中断请求并且 IEN1 的D5位为 1和P0IEN的 D1为 1 时,对应的中断使能位中断使能, 则根据中断类型号获 得中断向量,根据中断向量得到中断服务子程序的地址,执行终端服务子程序。当中断 服务子程序执行完毕 后返回执行原来的程序。
中断服务子程序的写法:
头文件中已定义部分代码:
#define T1_VECTOR VECT( 9, 0x4B
#define T2_VECTOR VECT( 10, 0x53 )
#define T3_VECTOR VECT( 11, 0x5B )
#define T4_VECTOR VECT( 12, 0x63 )
#define P0INT_VECTOR VECT( 13, 0x6B ) ⋯
格式如下:
#pragma vector = 中断向量
__interrupt void 任意函数名 (void)
{
// 中断处理, 处理完成后通常