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。
cc2530协议栈定时器中断的工作原理
cc2530协议栈定时器中断的工作原理1.引言在无线通信领域中,C C2530芯片是一款非常常见的单片机芯片,广泛应用于物联网、智能家居等场景中。
其内部集成了协议栈以实现无线通信功能。
本文将着重介绍c c2530协议栈定时器中断的工作原理。
2.定时器的作用在嵌入式系统中,定时器是一种重要的设备,用于定时操作和任务调度。
在c c2530芯片中,定时器被广泛应用于协议栈的各个模块,实现对通信和维护任务的精准控制。
3. cc2530协议栈定时器的特点c c2530芯片的协议栈中包含多个定时器,其中最重要的是MA C层定时器和P HY层定时器。
这些定时器具有以下特点:-高精度:定时器采用高精度的时钟源,并通过时钟分频技术实现微秒级的时间精度。
-可编程性:用户可以根据自己的需要对定时器进行配置和设置。
-中断触发:定时器可以在达到设定的定时时间时产生中断信号。
4. cc2530协议栈定时器中断的处理流程c c2530协议栈定时器中断的处理流程如下:-初始化定时器:在使用定时器前,需要对其进行初始化设置,包括选择时钟源、设置定时时间等。
-启动定时器:一旦定时器被启动,它便开始计时,并在达到设定的定时时间时触发中断信号。
-中断处理:当定时器中断信号触发时,C P U会进入中断处理程序,并执行相应的中断服务例程。
-中断服务例程:中断服务例程是用来处理定时器中断的代码段,其中包括对定时器的停止、重置等操作,以及其他需要执行的任务。
5.示例代码下面是一个简单的示例代码,演示了如何使用cc2530协议栈定时器中断:#i nc lu de<c c2530.h>//定时器中断服务例程#p ra gm av ec to r=TIM E R1_O VF_V EC TO R__in te rr up tv oi dTi m er1O ve rf lo w(voi d){//中断处理代码//...//定时器重置T1CT L|=0x01;}v o id ma in(v oi d){//初始化定时器T1CT L=0x02;//设置定时时间T1CC0L=0x50;T1CC0H=0x00;//启动定时器T1CT L|=0x04;//启用定时器中断I E N0|=0x80;//全局使能中断E A=1;w h il e(1){//主循环}}6.总结本文介绍了c c2530协议栈定时器中断的工作原理。
cc2530手册翻译(定时器1)
cc2530手册翻译(定时器1)1、定时器1是一个独立的16位定时器,有五个独立的捕获/比较通道,每一通道使用一个I/O引脚。
在每个活动时钟边沿递增或递减,活动时钟边沿周期由寄存器CLKCONCMD.TICKSPD定义,时钟频率范围为0.25M~32M。
进一步频率划分可通过T1CTL.DIV来设置,其取值有1、8、32或128。
因此,用32MHz为系统时钟源时,定时器1可以使用的最低时钟频率为1953.125Hz,最高为32MHz。
2、可以通过两个8位的SFR读取16位的计数器值:T1CNTH和T1CNTL,分别包含高位和低位字节。
当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出。
因此T1CNTL必须总是在读取T1CNTH之前首先读取。
3、对T1CNTL寄存器的所有写入访问将复位16位计数器。
当达到最终计数值(溢出)时,计数器产生一个中断请求。
可以通过设置T1CTL来控制定时器开始或挂起。
如果是非00值写入T1CTL.MODE时,计数器开始运行;如果是00写入T1CTL.MODE,计数器停止在它现在的值上。
4、操作模式(1)、自由运行模式(Free-Running Mode):计数器从0x0000开始,每个活动时钟边沿增加1,当计数器达到0XFFFF,计数器重新载入0X0000,继续递增它的值。
当终端计数器的值达到0XFFFF时,设置IRCON.T1IF和T1STAT.OVFIF。
如果同时设置了TIMIF.OVFIM和IEN1.T1EN,将产生一个中断请求。
自由运行模式可以用于产生独立的时间间隔,输出信号频率。
(2)模模式(Modulo Mode):16位计数器从0X0000开始,每个活动时钟边沿增加1,当计数器达到寄存器T1CC0(T1CC0H:T1CC0L)保存的最终计数值,计数器将复位到0X0000,并继续递增。
如果计数器以大于T1CC0的值开始,当终端计数器达到0XFFFF 时,将设置IRCON.T1IF和T1STAT.OVFIF。
单元八电源低功耗管理应用
任务一 系统睡眠和定时器唤醒
表8.3 时钟控制命令寄存器CLKCONCMD(0xC6)的描述
位
位名称
7
OSC 32 K
OSC 6
5:3
TICKSPD[2:0]
CLKSPD 1:0
复位值
1 1 001
001
操作
R/W R/W R/W
R/W
描述
32kHz时钟振荡器选择。CLKCONSTA.OSC32K反 映当前的设置。当要改变该位必须选择16MHz RCOSC作为系统时钟。 0:32MHz XOSC。 1:32kHz RCOSC。
任务一 系统睡眠和定时器唤醒
三、相关知识 2.CC2530睡眠定时器比较
睡眠定时器中断的中断使能位是IEN0.STIE,中断标志位是IRCON.STIF。 当运行在除PM3之外的所有功耗模式下,睡眠定时器都将开始运行。 因此,在PM3模式下,睡眠定时器的值不保存。在PM1 和PM2模式下, 睡眠定时器比较事件用于唤醒设备并返回主动模式的主动操作。复位后 比较值的默认值是0xFFFFFF。
任务一 系统睡眠和定时器唤醒
表8.2 电源管理寄存器
寄存器
作用
PCON(0x87) 供电模式控制
SLEEPCMD( 睡眠模式控制 0xBE)
ST0 ST1 ST2
描述
Bit[0] 供电模式控制。写1到该位强制设备进入 SLEEP.MODE(注意MODE=0x00且IDLE=1将停止CPU 内核活动)设置的供电模式。该位读出来一直是0。当活 动时,所有的使能中断将清除位,设备将重新进入主动 模式。
任务一
系统睡眠和定时器唤醒
CLKCONCMD.OSC
SLEEPCMD.OSC_PD SLEEPCMD.MODE[1:0]
CC2530定时器1的原理与编程
1:0 MODE[1:0]
//用T1来做实验128分频;自由运行模式 T1CTL=(0x3<<2)|(0x1<<0);
10
一、定时器1 通过T1CNTH和T1CNTL读取16位的计数器值,当读取 T1CTL时,计数器高位字节被缓冲到T1CNTH中,以便高位字节可 以从T1CTLH中读出。T1CNTL必须总是在读取T1CNTH之前首先 读取。 T1CNTL定时器1计数器低位
位
7: 0
T1CC0H 定时器1通道0捕获/比较值高位 位 7: 0 名称 T1CC0[15:8] 复位 R/W 描述
T1CCTL0.MODE=1(比较模式)时写0到该 寄存器导致T1CC0[15:8]更新写入值延迟到 T1CNT=0x0000。
0x00 R/W 定时器1通道0捕获/比较值,高位字节。当
定时器溢出500次,就让灯状态取反:
0.002048 500=1.024 S
灯每隔1.024S亮一次,隔1.024S灭一次
7
一、定时器1——自由运行模式
CLKCONCMD. TICKSPD
CLKCONCMD.OSC
系统时钟源 (32M或16M)
当时钟脉冲设置 为32M
全局定时 器分频
不分频
T1CTL.DIV
定时器溢出500次,就让灯状态取反: 0.002048 500=0.032 S
18
三、PWM数字调光的原理
在P1_1上的信号如果按下面几种情况,D2亮度有什么不同呢? (1) 1
(2)
1 0
(3) 1 (4)
0
0
上面4中情况,由暗到亮的顺序为:(1)(2)(3)(4)当加在P1_1管脚上的 信号的一个周期中,低电平所持续的时间占整个周期的时间越长,则发光二极管 越亮。由此可见,我们只需要改变占空比就可以调节D2亮度。我们一般把这种占 空比可以改变的数字信号叫做PWM(Pulse Width Modulation)波。 2、通过合适的配置,CC2530的定时器1除了产生定时中断外,还可以在输出 pwm波。定时器1共有5路pwm输出通道,具体如下:
单元四 CC2530定时器计数器应用
R/W DMA传输中断使能 0: 中断禁止
描述
1: 中断使能 1: 中断使能 1: 中断使能 1: 中断使能 1: 中断使能 1: 中断使能
任务一 定时器1控制LED周期性闪烁
T1IF位于IRCON寄存器中,需要手工进行清除。T1STAT寄 存器的描述如表4.6所示。
任务一 定时器1控制LED周期性闪烁
三、相关知识 3.工作模式 CC2530的定时器1只具备“自由运行”、“模”和“正计数/倒 计数”3种不同的工作模式。
(1)自由运行模式 在自由运行模式下,计数器从0x0000开始,在每个活动时 钟边沿增加1,当计数器达到0xFFFF时溢出,计数器重新载 入0x0000并开始新一轮的递增计数。
任务二 定时器3实现LED周期性闪烁
三、相关知识
1.定时器/计数器 定时器3和定时器4都是8位定时器,可用于PWM控制。每个 定时器有两个独立的比较通道,每个通道上使用一个I/O引脚。
任务二 定时器3实现LED周期性闪烁
三、相关知识
2.工作模式 CC2530的定时器3和定时器4都具备“自由运行”、“模” 、 “正计数/倒计数” 和 “倒计数”4种不同的工作模式。
任务一 定时器1控制LED周期性闪烁
三、相关知识 1.定时器/计数器的作用与工作原理 (1)定时器/计数器的作用 4)比较功能 当计数值与需要进行比较的值相同时,向CPU提出中断请 求或改变I/O口输出控制信号。该功能一般用来控制LED灯 亮度或电机转速。
任务一 定时器1控制LED周期性闪烁
三、相关知识 1.定时器/计数器的作用与工作原理 (2)基本工作原理
定时器/计数器的核心是一个计数器,可以进行加1(或 减1)计数,每出现一个计数信号,计数器就自动加1(或 自动减1)。当计数值从最大值变成0(或从0变成最大值) 溢出时,定时器/计数器便向CPU提出中断请求。计数信号 的来源可选择周期性的内部时钟信号(如定时功能)或非 周期性的外界输入信号(如计数功能)。
CC2530定时器设置以及应用
端口0
定时器4
定时器3
定时器2
定时器1
DMA完成
2)修改程序实现4个LED指示灯的流水灯控制,延时时间为1秒。
将P1口状态用数组存放,采用循环结构引用数组。
任务二、中断法程序设计
与定时器中断相关的寄存器
IEN1:中断使能1,0为中断禁止,1为中断使能
D7
D6
D5
D4
D3
D2
D1
D0
未用
未用
端口0
Hale Waihona Puke 定时器的应用一、教学目标1、熟悉定时器相关寄存器的功能
2、能对程序进行改写以实现不同时间的定时操作
二、教学重点
定时器T1寄存器设置
通过变量累计定时溢出调整定时时间的方法
三、教学难点
定时器以及定时中断寄存器的设置
四、教学方法
案例法、对比法
五、教学过程
[引入]定时器也是CC2530的重要资源之一,CC2530的定时器比51单片机的定时器功能更多,本次课通过阅读、修改程序以及相关寄存器的学习,使大家能基本应用定时器完成不同定时时间的程序设计。
定时器4
定时器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)修改查询法代码的初始化程序使其为中断控制法
IEN1 |=0X02; //定时器1中断使能
CC2530定时器
CC2530定时器⼀、定时/技术器的基本原理 定时/计数器,是⼀种能够对内部时钟信号或外部输⼊信号进⾏计数,当计数值达到设定要求时,向CPU提出中断处理请求,从⽽实现定时或者计数功能的外设。
定时/计数器的最基本⼯作原理是进⾏计数。
不管是定时器还是计数器,本质上都是计数器,可以进⾏加1(减1)计数,每出现⼀个计数信号,计数器就会⾃动加1(⾃动减1),当计数值从0变成最⼤值(或从最⼤值变成0)溢出时,定时/计数器就会向CPU提出中断请求。
⼆、CC2530的定时/计数器根据数据⼿册可知 CC2530 总共有 4 个定时器,但是定时器 2 被系统占⽤,可⽤的只有三个,分别为定时器 1、3、4。
其中定时器 3 和定时器 4 是两个 8 位定时器,定时器 1 是⼀个独⽴的 16 位定时器。
为CC2530中功能最全的⼀个定时/计数器,在应⽤中应优先选⽤。
定时器1的⼯作模式有三种:<1> ⾃由运⾏模式:计数器从 0x0000 开始,每个活动时钟边沿增加 1。
当计数器达到 0xFFFF 时(溢出),计数器载⼊ 0x0000,继续递增它的值,如图 3.2.1 所⽰。
当达到最终计数值 0xFFFF,设置标志 IRCON.T1IF 和 T1STAT.OVFIF。
如果设置了相应的中断屏蔽位TIMIF.OVFIM 以及 IEN1.T1EN,将产⽣⼀个中断请求。
⾃由运⾏模式可以⽤于产⽣独⽴的时间间隔,输出信号频率。
<2> 模模式:计数器从0x0000开始,在每个活动时钟边沿增加1,当计数器达到T1CC0寄存器保存的值时溢出,计数器⼜将从0x0000开始新⼀轮的递增计数,模模式的计数周期可由⽤户⾃⾏设定。
<3> 正计数/倒计数模式:计数器反复从 0x0000 开始,正计数直到达到 T1CC0H 与 T1CC0L 保存的值。
然后计数器将倒计数直到0x0000,如图 3.2.3 所⽰。
这个定时器⽤于周期必须是对称输出脉冲⽽不是 0xFFFF 的应⽤程序,因此允许中⼼对齐的 PWM 输出应⽤的实现。
CC2530Timer应用
• 对T1CNTL寄存器的所有写入访问将复位16位计数 器。
定时器1工作原理
• 当达到最终计数值(溢出)时,计数器产 生一个中断请求。可以用T1CTL控制寄存器 设置启动并停止该计数器。当一个不是00 值的写入到T1CTL.MODE时,计数器开始运 行。如果00写入到T1CTL.MODE,计数器停 止在它现在的值上。
S4
S W-PB S3
S W-PB S5
S W-PB
• 这在定时器1中由T1CTL.DIV设置的分频器值进一步 划分。这个分频器值可以从1、8、32或128。因此 当32MHz晶振用作系统时钟源时,定时器1可以使 用的最低时钟频率是1953.125Hz,最高是32MHz 。
T/C1、3、4的预分频器
预分频器的作用是将系统时钟(如本实验
装置上的系统时钟为16.00MHz)按设定的 比例进行分频,以产生不同周期的时钟 clkT1、 clkT3、 clkT4 ,分别作为时钟源提 供给T/C1、 T/C3、 T/C4使用。
捕获标10志ICF
S3
中断请求2
溢出标志TF
S2
中断请求1
计数器的工作原 理与前述相同
PWM输出原理与方法(1 )
PWM——Pulse-Width Modulation——脉冲宽度调制
PWM输出的一般形式:
t
τ
PWM波形的特点: 波形频率恒定,其占空比D可以改变。
定义D=t/τ为占空比
S1
时钟源
外部时钟源
S1 S0
内部时钟源
S0用于选择内 部/外部时钟源
计数器 初值
S2
溢出标志TF
中断请求
CC2530定时器
CC2530定时器CC2530定时器定时器介绍什么是定时器?定时器是⼀种能够对输⼊时钟(或脉冲)进⾏计数,在达到计数值时可以触发中断的外设。
定时器有哪些作⽤?定时器功能: 对输⼊的时钟进⾏计数,达到计数值可以触发中断。
输⼊计数器功能: 对外部的脉冲个数输⼊进⾏计数。
PWM输⼊捕获功能: 可以获取输⼊的PWM的频率和脉宽信息。
PWM输出功能: 按⼀定频率和脉宽输出PWM信号。
PWM = Pulse width modulation,是⼀种脉宽调制技术,可以利⽤脉冲的宽度控制LED的亮度、电机的转速等。
寄存器分析功能图寄存器⾃由运⾏模式取模模式向上向下计数模式定时器1分析定时器1是⼀个16位的定时器,主要有以下⼏个功能:5个通道,每隔通道可以单独设置计数值。
可以设置输⼊捕获的边沿(上升沿、下降沿、双边沿)⾃由运⾏模式、取模模式、向上/向下计数模式时钟分频可以设置为1、8、32、128每隔通道都可以触发中断可以触发DMA请求⼯作模式介绍⾃由运⾏模式: 计数值⾃增达到0xFFFF之后归零,重新开始计数。
取模模式: 计数值⾃增到T1CC0配置的数字后归零,重新开始计数。
向上/向下计数模式: 计数值先⾃增到T1CC0,然后开始⾃减到0,然后再次开始⾃增(这个就是呼吸灯的⼯作⽅式,不知道还有什么作⽤)。
由于每⼀种模式下的配置不同,这⾥使⽤定时器来实现控制LED以1Hz的频率闪烁,也就是亮0.5S,然后灭0.5秒。
那么需要配置为取模模式⽐较⽅便,到达设定值后⾃动归零,重新开始计数。
相关的寄存器有:T1CC0H:T1CC0L计数值的⾼8位和低8位。
T1STAT.CH0IF定时器1的通道1中断标志,写⼊0清除标志。
T1STAT.OVFIF定时器1的计数溢出中断标志,写⼊0清除标志。
IEN1.T1EN定时器1的中断开关。
TIMIF.OVFIM定时器1的中断溢出使能位。
具体实现定时器1的通道0的初始化//16MHz RC是默认的时钟源,没有校准的时候误差是正负18%//定时器的⼯作频率 16MHz / 128 = 125000Hz//定时500ms,也就是计数62500//周期应该是1秒,实测940毫秒,RC的误差,切换到外部晶振应该会准确⼀些的。
cc2530参数及其用途
CC2530简介CC2530是用于IEEE802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(soc)解决方案。
它能够已非常低的总的材料成本建立强大的网络节点。
CC2530结合了领先的RF 收发器的优良性能,业界标准的增强型的8051 CPU,系统能可编程的闪存,8-KB RAM和许多其他强大的功能。
CC2530有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。
CC2530具有四种不同的运行模式,使得它尤其适应超低功耗要求的系统。
运行模式之间的转换时间短,进一步确保了低能源消耗。
功能:●RF/布局适应2.4-GHz IEEE 802.15.4的RF收发器极高饿接收灵敏度和抗干扰性能可编程的输出功率高达4.5dBm只需极少的外接元件只需要一个晶振即可满足网状网络系统需要6-m m×6-mm的QFN40封装适合系统配置符合世界范围的无线电频率法规:ETSI EN 300 328 和EN 300440(欧洲),FCC CFR47第15部分(美国)和ARIB STD-T-66(日本)●低功耗主动模式RX(CPU空闲):24Ma主动模式TX在1dBm(CPU空闲):29Ma供电模式1(4us唤醒):0.2Ma供电模式2(睡眠定时器运行):1Ua供电模式3(外部中断):0.4Ua宽电压范围(2-3.6V)●外设强大的5通道DMAIEEE 802.15.4 MAC定时器,通用定时器(一个十六位的定时器,一个8位定时器)IR(红外)发生电路具有捕获功能的32-kHz睡眠定时器硬件支持CSMA/CA支持精确的数字化RSSI/LQI电池监视器和温度传感器具有8路输入和可配置分辨率的12位的ADCAES安全协处理器2个支持多种串行通信协议的强大USART21个通用I/O引脚(19个4mA、2个20mA最大驱动能力)看门狗定时器●开发工具CC2530开发套件CC2530ZigBee开发套件用于RF4CE的CC2530RemoTI卡法套件SmartRF软件数据包嗅探器可用的IAR嵌入式平台应用● 2.4-GHz IEEE 802.15.4系统●RF4CE远程控制系统(需要大于64-KB的闪存)●ZigBee、系统(256-KB内存)●家庭/楼宇自动化●照明系统●工业控制与监控●低功耗无线传感网络●消费型电子●医疗保健\●……。
- 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