CC2530定时器设置以及应用
ZigBee芯片CC2530寄存器配置说明

CC2530寄存器配置说明ZigBee的基础实验(1)这是飞比FB2530EB V2.0提供的芯片I/O对应表*more607*2011/11/17 22:13*飞比CC2530EB模块*/#include <ioCC2530.h>#define uint unsigned int#define uchar unsigned char//定义控制灯的端口#define RLED P1_0 //定义LED1为P1.0口控制#define GLED P1_1 //定义LED2为P1.1口控制#define YLED P1_4 //定义LED3为P1.4口控制#define BLED P0_1 //定义LED4为P0.1口控制#define S1 P0_1 //定义S1为P0.1口控制(注意:因为端口复用所以需要设置P0DIR,//在程序中复用比较难,所以本程序就不用来做按键了)#define S2 P0_3 //定义S2为P0.3口控制(我将P10的针脚接到P14针脚上,所以是P0.3口)#define S6 P1_2 //定义S6为P1.2口控制//函数声明void InitIO(void); //初始化LED控制IO口函数void InitKey(void); //初始化按键void keyScan(void); //按键输入//全局变量int times; //计数器void InitIO(void) //初始化IO口程序{P1DIR |= 0x13; //P1_0、P1_1、P1_4定义为输出P0DIR |= 0x02; //P0_1定义为输出RLED = 1;GLED = 1;YLED = 1;BLED = 1; //将4盏LED灯都打开}void InitKey(void)//初始化按键{P1SEL &= 0xFB; //定义为输入P1DIR &= 0xFB; //按钮s6的P1INP |= 0x06; //拉高电压P0SEL &= 0xFB; //定义为输入P0DIR &= 0xFB; //按钮s6的P0INP |= 0x06; //拉高电压}void keyScan(void){if(S6 == 0)times ++;//增加值while(S6 == 0);if(S2 == 0)times=0;//清空值while(S2 == 0 );}void main(void){times = 0;InitIO(); //初始化while(1) //死循环让循环内的代码不断执行{keyScan();if(times>4)times = 0;if(times == 0)//灯全灭{RLED = 0;GLED = 0;YLED = 0;BLED = 0;}if(times == 1)//亮一灯{RLED = 1;GLED = 0;YLED = 0;BLED = 0;}if(times == 2)//亮两个灯{RLED = 1;GLED = 1;YLED = 0;BLED = 0;}if(times == 3)//亮三个灯{RLED = 1;GLED = 1;YLED = 1;BLED = 0;}if(times == 4)//全亮{RLED = 1;GLED = 1;YLED = 1;BLED = 1;}}}来自:/j_evil/blog/static/163211317201161211362979/数据手册P0SEL(P1SEL相同):各个I/O口的功能选择,0为普通I/O功能,1为外设功能P2SEL:(D0到D2位)端口2 功能选择和端口1 外设优先级控制什么是外设优先级:当PERCFG分配两个外设到相同的引脚时,需要设置这两个外设的优先级,确定哪一个外设先被响应ERCFG:设置部分外设的I/O位置,0为默认I位置1,1为默认位置2P0DIR(P1DIR相同):设置各个I/O的方向,0为输入,1为输出P2DIR :D0~D4设置P2_0到P2_4的方向 D7、D6位作为端口0外设优先级的控制P0INP(P1INP意义相似) :设置各个I/O口的输入模式,0为上拉/下拉,1为三态模式需要注意的是:P1INP中,只有D7~D2分别设置对应I/O口的输入模式。
CC2530定时器使用

通过本次实验将会掌握定时器T1的一些简单用法。
本次实验学习到的新寄存器:T1STAT:定时器1的状态寄存器,D4~D0为通道4~通道0的中断标志,D5为溢出标志位,当计数到最终技术值是自动置1。
源代码:#include <ioCC2530.h>#define uint unsigned int#define uchar unsigned char#define LED1 P1_0 //定义LED1为P10口控制#define LED2 P1_1 //定义LED2为P11口控制#define LED3 P1_4 //定义LED3为P14口控制uint counter=0; //统计溢出次数uintLEDFlag; //标志是否要闪烁void InitialT1test(void); //初始化函数声明void InitialT1test(void){//初始化LED控制端口P1P1DIR = 0x13; //P10 P11 P14为输出P0DIR = 0x02;LED1 = 1;LED2 = 1;LED3 = 1;//初始化计数器1T1CTL = 0x05; //通道0,中断有效,8分频;自动重装模式(0x0000->0xffff)}void main(){InitialT1test(); //调用初始化函数while(1){if(IRCON==0x02) //查询溢出中断标志,是否有中断并且为定时器1发出的中断{IRCON = 0; //清溢出标志counter++;if(counter==30) //中断计数,约0.25s{counter =0;LED2 = LED1;LED3 = !LED2;LED1 = !LED1;LEDFlag = !LEDFlag;}}if(LEDFlag){LED2 = LED1;LED3 = !LED2;LED1 = !LED1; // 每1s LED灯闪烁一下LEDFlag = !LEDFlag; // 闪烁标志变量置0}}}实验总结:定时器1的工作原理:这次实验中定时器1工作在自由运行方式下,定时器1开始工作后从0x0000开始做加1计算,一直到0xffff。
Zigbee实验4 CC2530定时器实验

unsigned char counter;
//系统时钟初始化为32M
void SysClockInit(void)
{
unsigned int i;
SLEEPCMD &= ~0x04;
预定周期的亮灭控制。 1.4.4 实验原理
定时器 1 是一个 16 位定时器,具有定时器/计数器/脉宽调制功能。它有 3 个 单独可编程 输入捕获/输出比较 信道,每一个信道都可以用来当做 PWM 输出 或用来捕获输入信号的边沿时间。
定时器有一个很重要的概念:操作模式。 操作模式包含:自由运行模式(free-running)、 模模式(modulo)和 正计 数/倒计数模式(up-down)。本次实验学习到的新寄存器: T1CTL:定时器 1 的控制,D1D0 控制运行模式,D3D2 设置分频划分值。
T1STAT:定时器 1 的状态寄存器,D4~D0 为通道 4~通道 0 的中断标志,D5 为 溢出标志位,当计数到最终技术值是自动置 1。
T1CCTL0:D1D0 为捕捉模式选择:00 为不捕捉,01 为上升沿捕获,10 为下 降沿捕获,11 为上升或下降沿都捕获。
D2 位为捕获或比较的选择,0 为捕获模式,1 为比较模式。D5D4D3 为比 较模式的选择:000 为发生比较式输出端置 1,001 为发生比较时输出端清 0,010 为比较时输出翻转,其他模式较少使用。 IRCON:中断标志4,;0 为无中断请求。1 为有中断请求。
//都上电
while(!(CLKCONSTA & 0x40));
(完整版)CC2530使用手册

使用步骤:
1,将Coordinator模块通过串口连接至PC,打开TI Sensor Monitor软件,选取Coordinator连接的串口号,并点击RUN图标,运行,此时可以看到表示Coordinator的图标变成红色,表示Coordinator与PC连接成功。(注意:TI Sensor Monitor软件只支持串口的波特率为38400);
3,同理,将其它的Router模块上电,则它们会自动寻找并加入这个网络,按下TEST按键,组网后的结构如下:
4,Coordinator可直接绑定6个Router,超出以后,其它的Router通过前面的Router继续加入网络,每个Router可接受其它6个Router加入网络,并分配地址:
Zigbee模块的数据传输
型号:DRF1605H,主要功能:串口(UART)转Zigbee无线数据透明传输
(与DRF1605 PIN脚完全兼容,传输距离1.6公里)
(模块出厂默认设置为Router,用户可自行切换为Coordiantor)
网址:/item.htm?spm=a230r.1.14.59.Dro24U&id=12715872819&_u=s5dvrl304f1
DRF1600 系列Zigbee模块数据传输功能非常简单易用,有二种数据传送方式:
(1),数据透明传输方式:
只要传送的第一个字节不是0xFE,0xFD 或 0xFC,则自动进入数据透明传输方式;
Coordinator从串口接收到的数据,会自动发送给所有的节点;
CC2530单片机技术与应用 第2版 第4章CC2530 定时计数器应用

1、定时计数器介绍
CC2530中共包含了5个定时/计数器,分别是定时器1、定时 器2、定时器3、定时器4和睡眠定时器。
定时器1:是一个16位定时器 定时器2:用户一般情况下不使用该定时器 定时器3:是8位的定时器 定时器4:是8位的定时器 睡眠定时器:一个24位的正计数定时器,先不用管
1、定时计数器介绍
1、定时计数器介绍
定时/计数器的类型 在单片机中,分为软件定时器,不可编程硬件定时器,可编程定时器。
定时器与计数器的区别和联系 计数器和定时器的本质是相同的,他们都是对单片机中产生
的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器 是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同 的时候,计数器和定时器就是一个概念。
第04章 CC2530 定时计数器应用
本章简介
1、定时/计数器介绍 2、定时/计数器实验 3、拓展题
1、定时计数器介绍
什么是定时/计数器?
定时/计数器是一种能够对时钟信号或外部输入信号进行计数, 当计数值达到设定要求时便向CPU提出处理请求,从而实现定 时或计数功能的外设,
使用定时/计数器才能达到较为精准的时间控制
1、定时计数器介绍
定时器的作用?
定时/计数器的基本功能是实现 定时和计数,且在整个工作过 程中不需要CPU进行过多参与 ,它的出现将CPU从相关任务 中解放出来,提高了CPU的使 用效率,定时器是分线程中处 理的。
1、定时计数器介绍
定时/计数器基本工作原理
定时/计数器,其最基本的工作原 理是进行计数。定时/计数器的核 心是一个计数器,可以进行加1 (或减1)计数,每出现一个计数 信号,计数器就自动加1(或自动 减1),当计数值从最大值变成0 (或从0变成最大值)溢出时定时/ 计数器便向CPU提出中断请求
cc2530单片机定时器最大计数值的计算方式

cc2530单片机定时器最大计数值的计算方式
CC2530是一款基于8051微控制器的无线SoC(System on a Chip)芯片,由Texas Instruments(TI)制造。
它具有一个16位定时器/计数器,该定时器/计数器的最大计数值取决于其时钟源。
在CC2530中,定时器的时钟源可以配置为系统时钟(系统时钟源乘以特定的分频系数)。
CC2530的系统时钟源可以是HFXO (High-Frequency Crystal Oscillator,高频晶体振荡器)或LFXO (Low-Frequency Crystal Oscillator,低频晶体振荡器)。
定时器的最大计数值可以通过以下公式计算:
最大计数值 = 系统时钟频率 / (分频系数×定时器时钟系数)
其中:
1、系统时钟频率:取决于所使用的时钟源(HFXO或LFXO)。
2、分频系数:定时器时钟源的分频系数,范围是1-128。
3、定时器时钟系数:通常为1。
例如,如果系统时钟源是HFXO,其频率为48MHz,分频系数为8,定时器时钟系数为1,那么最大计数值为:
最大计数值 = 48,000,000 / (8 × 1) = 6,000,000
这意味着定时器的计数值可以达到6,000,000。
单元七 CC2530看门狗应用

任务一 看门狗定时器应用
三、相关知识
3.CC2530看门狗的相关寄存器
看门狗的控制寄存器为WDCTL,其功能描述如表7.1表示。
位
位名称
复位值
操作
描述
7:4
CLR[3:0]
0000
R0/W
清除定时器。当0xA跟随0x5写入这些位,定时器
被清除(即加载0)。注意:定时器仅写入0xA之
后,在一个看门狗时钟周期内写入0x5时才被清除
功能。
(1)定时时间间隔设置
要设置定时时间间隔为1s,首先设置系统时钟源振荡周期
为32kHz,可通过时钟控制命令寄存器
CLKCONCMD.OSC32K位来设定。然后设定看门狗定时器
控制寄存器WDCTL.INT[1:0]为00(即设定时间间隔为1s)。
设置代码如下。
CLKCONCMD &= 0x80; //系统时钟源选择32kHz
定时器模式时要转换到看门狗模式,首先停止看
门狗定时器,然后启动看门狗定时器处于看门狗
模式。当运行于看门狗模式时,写这些位没有影
响。
00:IDLE。
01:IDLE(未使用,等于00设置)。
10:看门狗模式。
11:定时器模式。
1:0
INT[1:0]
00
R/W
定时器间隔选择。这些位选择定时器间隔定义为
32MHz振荡器周期的规定数。注意间隔只能当看
任务一 看门狗定时器应用
三、相关知识 (2)看门狗模式
看门狗定时器运行于一个频率为32.768kHz(当使用32kHz XOSC) 的看门狗定时器时钟上。这个时钟频率的超时期限为1.9ms、 15.625ms、0.25s 和1s,分别对应64、512、8192 和32768 的计数 值设置。如果计数器达到选定定时器的间隔值,则看门狗定时器为系统 产生一个复位信号。如果在计数器达到选定定时器的间隔值之前,执行 了一个看门狗清除序列,则计数器复位到0,并继续递增。如果这个序 列没有在看门狗周期结束之前执行完毕,则看门狗定时器为系统产生一 个复位信号。 【注意】在看门狗模式下,看门狗定时器不会产生中断请求。
CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)

CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)⽬录1. 前期预备知识1.1 定时器中断触发本次实验需关注的中断寄存器。
在本次实验中,分别会使⽤T1和T3定时器完成功能,所以我们需要注意上图中标注出的中断寄存器。
T1定时器:16位定时器(065535)。
T3定时器:8位定时器(0255)1.2 相关寄存器注:⼀下只给出实验中新出现的寄存器,并不是本次实验需⽤到的所有寄存器;想了解其它寄存器作⽤及功能请看之前的基础实验⽂档,或查看CC2530中⽂数据⼿册。
寄存器名称作⽤寄存器描述T1CTL (0xE4)定时器1的控制和状态T1CTL (bit 3~2) 为分频器划分值,具体值如下:00:标记频率/101:标记频率/810:标记频率/3211:标记频率/128T1CTL (bit 1~0) 为选择定时器1模式00:暂停运⾏01:⾃由运⾏10:模,从0x0000到T1CC0反计数11:正计数/倒计数,从0x0000到T1CC0反复计数并且从T1CCO倒计数到0x000T1STAT (0xAF)定时器1 状态bit5:定时器计数器溢出中断标志bit4:定时器1通道4中断标志bit3:定时器1通道3中断标志bit2:定时器1通道2中断标志bit1:定时器1通道1中断标志bit0:定时器1通道0中断标志IEN1 (0xB8)中断使能 1IEN1寄存器中我们只使⽤了bit1,bit3所在的功能,bit1 : T1计时器中断使能bit3 : T3计时器中断使能TIMIF (0xD8)定时器1/3/4中断屏蔽/标志TIMIF我们这⼀次实验只⽤到了bit6为定时器1溢出中断屏蔽IRCON (0xC0)中断标志4bit1:定时器1中断标志。
当定时器1中断发⽣时设为1并且当CPU向量指向中断服务例程时清除。
0:⽆中断未决1:中断未决T3CTL (0xCB)定时器3的控制和状态bit[7:5] : 定时器时钟分频倍数选择:000:不分频; 001:2分频; 010:4分频011:8分频; 100:16分频; 101:32分频110:64分频; 111:128 分频.bit4 : T3 起⽌控制位bit3 : 溢出中断掩码 0:关溢出中断 1:开溢出中断bit2 : 清计数值⾼电平有效Bit[1:0]T3模式选择00:⾃动重装 0x00-0xFF01:DOWN (从T3CC0 到0X00计数⼀次)10:模计数(反复从 0X00到T3CC0 计数)11:UP/DOWN(反复从0X00到T3CC0 计数再到0X00)T3CCTL0(0xCC)T3 通道 0 捕获/⽐较控制寄存器bit6: 通道0中断屏蔽 0:中断禁⽌ 1:中断使能bit5~3: T3 通道0 ⽐较输出模式选择bit2: T3 通道0模式选择: 0:捕获 1:⽐较bit1~0 T3 通道 0 捕获模式选择00 没有捕获 01 上升沿捕获10 下降沿捕获 11 边沿捕获T3CC0(0xCD)定时器 3 通道0捕获/⽐较值定时器捕获/⽐较值通道 0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器3
定时器2
定时器1
DMA传输
IEN0:中断使能0,0为中断禁止,1为中断使能
D7
D6
D5
D4
D3
D2
D1
D0
总中断EA
未用
睡眠定时器中断
AES加密/解密中断
USART1 RX中断
USART0 RX中断
ADC中断
RF TX/RF FIFO中断
1)修改查询法代码的初始化程序使其为中断控制法
00:暂停运行
01:自由运行,反复从0x0000到0xffff计数
10:模计数,从0x000到T1CC0反复计C0倒计数到0x0000
IRCON:中断标志4,;0为无中断请求。1为有中断请求。
D7
D6
D5
D4
D3
D2
D1
D0
睡眠定时器
定时器的应用
一、教学目标
1、熟悉定时器相关寄存器的功能
2、能对程序进行改写以实现不同时间的定时操作
二、教学重点
定时器T1寄存器设置
通过变量累计定时溢出调整定时时间的方法
三、教学难点
定时器以及定时中断寄存器的设置
四、教学方法
案例法、对比法
五、教学过程
[引入]定时器也是CC2530的重要资源之一,CC2530的定时器比51单片机的定时器功能更多,本次课通过阅读、修改程序以及相关寄存器的学习,使大家能基本应用定时器完成不同定时时间的程序设计。
定时器程序设计方法也分为查询法和中断法。
任务一、查询法程序设计
1)结合以下寄存器的功能介绍阅读程序,分析程序的功能,并分析定时时间
T1CTL:定时器1的控制,D1D0控制运行模式,D3D2设置分频划分值
D7
D6
D5
D4
D3D2
D1D0
未用
未用
未用
未用
00:不分频
01:8分频
10:32分频
11:128分频
定时器初始化
定时中断初始化
void init(void)
{ P1SEL &= ~0x03; //设置LED1、LED2为普通IO口
P1DIR |= 0x003 ; //设置LED1、LED2为输出
LED1 = 0;
LED2 = 1;//灭LED
T1CTL = 0x05; // T1通道0,8分频;自动重载模式(0x0000->0xffff);
IEN1 |=0X02; //定时器1中断使能
EA=1; //开总中断
CLKCONCMD &= 0x80; //时钟速度设置为32MHz
}
2)中断服务子程序设计
请同学们将任务一的程序调整为中断服务子程序
#pragma vector = T1_VECTOR //中断服务子程序
__interrupt void T1_ISR(void)
{
…
…
}
注意:中断标志需要软件清除,T1的中断标志位为T1IF
六、小结
本次课通过两个案例,分别采用查询法和中断法对定时器1进行程序设计,为后面的串口操作打下了基础。
七、作业
请同学们结合按键控制LED和定时器操作完成程序设计,按下按键,LED灯以1秒的时间间隔依次点亮
必须为0
端口0
定时器4
定时器3
定时器2
定时器1
DMA完成
2)修改程序实现4个LED指示灯的流水灯控制,延时时间为1秒。
将P1口状态用数组存放,采用循环结构引用数组。
任务二、中断法程序设计
与定时器中断相关的寄存器
IEN1:中断使能1,0为中断禁止,1为中断使能
D7
D6
D5
D4
D3
D2
D1
D0
未用
未用
端口0