CC2530的中断系统和定时器原理
CC2530单片机原理及应用教学课件第5章
时间 。
浪费功耗。
如果协调器存储了多个要转发的帧,假设这些帧的目的地址是各个终端 设备,那么将这些目的地址加载到源地址表中,只有地址匹配的终端设备地 址请求,才会给予自动应答。如果协调器中未存储某个设备地址的帧,那么, 协调器不会就此设备的轮询请求给予应答。节省了功耗。
5.1.2 源地址匹配
RF内核
定时器2用于无线电事件计时,以捕获输入数据包的时间戳。定时器2在 睡眠模式下也保持计数。
5.2 IEEE802.15.4-2006标准帧格式及处理
知识点1:数据帧处理 ✓ 提问1:数据帧由哪几个部分组成?如何产生数据帧? ✓ 提问2:接收方在接收到数据帧之后如何处理? 知识点2:确认帧 ✓ 提问:确认帧有什么作用?它由哪几部分组成?
5.2 IEEE802.15.4-2006标准帧格式及处理
CC2530支持的Zigቤተ መጻሕፍቲ ባይዱee协议栈,物理层和MAC层遵循 IEEE802.15.4-2006标准,所以本节学习基与该标准的数据帧发送 的基本知识,包括帧格式、帧处理过程。
5.2.1 帧格式
CC2530的帧格式包括数据帧格式、确认帧格式,下面分别介绍。 1. 数据帧格式
5.3.2 RXFIFO访问
RXFIFO访问 在对RXFIFO进行操作的过程中,可能会发生上溢或下溢的情况。 当RXFIFO接收到的数据超过128字节时,RXFIFO将产生溢出, 此种溢出被称为上溢; 当RXFIFO为空的时候,且软件从RXFIFO中读取数据时,会产生 溢出,此种溢出被称为下溢。 接收端的溢出可以通过设置寄存器标志来判定,并且溢出还可以 产生错误中断。
5.3.1 TXFIFO访问
有两种方式将数据帧写入到TXFIFO中。
通过写RFD寄存器的方式将数据帧写入到TXFIFO中。 通过使能FRMCTRL1.IGNORE_TX_UNDERF位,可以直接将数据写入
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。
2-CC2530简介
CC2530外设
强大的5通道DMA IEEE802.15.4MAC定时器,通用定时器(一个16 位定时器,一个8位定时器) IR发生电路(IR 中断) 具有捕获功能的32-kHz睡眠定时器 硬件支持CSMA/CA 支持精确的数字化RSSI/LQI
CC2530外设
ledio.h
#ifndef _LEDIO_H_ #define _LEDIO_H_ #include <ioCC2530.h> #define LED_2 P1_1 extern void IoInit(void); extern void Delay(unsigned int time); #endif
CC2530基础开发
CC2530芯片
CC2530 是基于2.4-GHz IEEE802.15.4、ZigBee 和 RF4CE 上的一个片上系统解决方案。其特点是以极 低的总材料成本建立较为强大的网络节点。 CC2530 芯片结合了RF 收发器,增强型8051 CPU, 系统内可编程闪存,8-KB RAM 和许多其他模块的 强大的功能。如今CC2530 主要有四种不同的闪存 版本:CC2530F32/64/128/256,分别具有 32/64/128/256KB 的闪存。其具有多种运行模式, 使得它能满足超低功耗系统的要求。同时CC2530 运行模式之间的转换时间很短,使其进一步降低能 源消耗。
main.c
#include <ioCC2530.h> #include "ledio.h" main() { IoInit(); while(1) { LED_2 = 0; Delay(20); LED_2 = 1; Delay(20); } }
CC2530单片机原理及应用教学课件第3章
~SRAM_SIZE-1。
返回
3.1.2 存储器和映射
CODE映射一
0xFFFF Bank 0-7
(32KB FLASH)
0x8000 0x7FFF
普通区/Bank 0 (32KB FLASH)
0x0000
CC2530F256中的FLASH存储空间为256KB, 超出了8051单片机16位地址总线的寻址空间。
3.3 通用 I/O
3.3.1 功能寄存器PxSEL 3.3.2 方向寄存器PxDIR 3.3.3 配置寄存器 PxINP 教学目标:掌握CC2530通用 I/O 寄存器及其应用。
3.3 通用I/O
知识点1:I/O端口的特点、分类、设置方法 提问:I/O端口的重要特点是什么?CC2530有哪些端口?分别是多少位? 对应哪些引脚? 知识点2:功能选择寄存器PxSEL 提问:功能选择寄存器有什么作用?如何配置? 知识点3:方向寄存器PxDIR 提问:方向寄存器有什么作用?如何配置? 知识点4:寄存器应用 提问:如何控制LED闪烁
1111
=0xFFF F
信息页面映射到XDATA的地址区域为
XBANK ( 可选的32KB闪存区 )
0x7800~0x7FFF,个只读区域,存储与芯片相
0x8000 0x7FFF
0x7800
信息页面 (2KB)
关的信息。 8051的SFR寄存器映射的地址区域为
8051 SFR空间 8051 DATA 空间
(0x8000+SRAM_SIZE-1),从而使程序代码从RAM执行。
0:SRAM映射到CODE功能禁用;1:SRAM映射到CODE功能使能
2~0 XBANK[2:0] 000 R/W XDATA区选择,控制物理闪存存储器的哪个代码区域映射到
(完整word版)CC2530实验指导书
CC2530实验指导书合肥市博焱科技有限公司目录一、CC2530基础实验部分 (3)1。
1 输入输出I/O 控制实验 (3)1.1.1 CC2530 基础实验1 :LED自动闪烁 (3)1.1。
2 CC2530 基础实验2 :按键控制LED开关 (5)1.2 中断实验 (6)1.2.1CC2530 基础实验3 :外部中断 (6)1。
3 定时/ 计数器实验 (8)1.3.1CC2530 基础实验4:T1使用 (8)1。
3.2CC2530 基础实验5 :T2使用 (9)1.3.3CC2530 基础实验6:T3使用 (12)1。
3.4 CC2530 基础实验8 :T4使用 (15)1.4 串口UART (17)1.4.1CC2530 基础实验9:单片机串口发数 (17)1.4.2CC2530 基础实验10:在PC用串口控制LED (19)1。
4.3CC2530 基础实验11:PC串口收数并发数 (20)1。
4.4CC2530 基础实验12:串口时钟PC显示 (22)1.5 睡眠定时器实验 (23)1。
5。
1 CC2530 基础实验13:系统睡眠工作状态 (23)1。
5。
2 CC2530 基础实验14 :睡眠定时器使用 (24)1。
6 ADC实验 (26)1.16.1 CC2530 基础实验15 :ADC实验 (26)1。
7 看门狗 (28)1。
7.1CC2530 基础实验16:看门狗模式 (28)一、CC2530基础实验部分1。
1 输入输出I/O 控制实验1.1.1 CC2530 基础实验1 :LED自动闪烁一、实验目的:本实验的目的是让用户了解CC2530的I/O接口的编程方法,学会使用I/O操作外部设备。
实验以LED为外设,通过I/O控制LED的亮灭.二、实验仪器设备仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。
三、实验内容:(一)实验原理说明:硬件说明:图1 LED连接原理图如图1所示,发光二极管的D2的阴极与CC2530的P1_1连接,发光二极管的D3的阴极与CC2530的P1_0连接。
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外部中断⼀、中断基础概念内核与外设之间的主要交互⽅式有两种:轮询和中断。
中断系统使得内核具备了应对突发事件的能⼒。
在执⾏CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执⾏的程序,转⽽去执⾏另外⼀段特殊程序来处理出现的紧急事务,处理结束后,CPU⾃动返回到原来暂停的程序中去继续执⾏。
这种程序在执⾏过程中由于外界的原因⽽被中间打断的情况,称为中断。
采⽤中断技术后,可以为计算机系统带来以下好处:1)实现分时操作速度较快的CPU和速度较慢的外设可以各做各的事情,外设可以在完成⼯作后再与CPU进⾏交互,⽽不需要CPU去等待外设完成⼯作,能够有效提⾼CPU的⼯作效率。
2)实现实时处理在控制过程中,CPU能够根据当时情况及时做出反应,实现实时控制的要求。
3)实现异常处理系统在运⾏过程中往往会出现⼀些异常情况,中断系统能够保证CPU及时知道出现的异常,以便CPU去解决这些异常,避免整个系统出现⼤的问题。
两个重要的概念:<1> 中断服务函数:内核响应中断后执⾏的相应处理程序。
例如ADC转换完成中断被响应后,CPU执⾏相应的中断服务函数,该函数实现的功能⼀般是从ADC结果寄存器中取⾛并使⽤转换好的数据。
<2> 中断向量:中断服务程序的⼊⼝地址,当CPU响应中断请求时,会跳转到该地址去执⾏代码。
⼆、 CC2530中断CC2530具有18个中断源,每个中断源都有它⾃⼰的位于⼀系列SFR 寄存器中的中断请求标志。
相应标志位请求的每个中断可以分别使能或禁⽤。
Tip:(1)当调⽤中断服务例程时清除硬件。
(2)另外的 IRQ 掩码和 IRQ 标志位存在。
三、CC2530中断处理函数格式书写中断服务函数与⼀般⾃定义函数不同,有特定的书写格式:#pragma vector = 中断向量__interrupt void 函数名称(void){/*此处编写中断处理函数的具体程序*/PxIFG = 0; //先清除Px引脚的中断状态标志位PxIF = 0; //再清除Px端⼝组的中断状态标志位}<1> 在每⼀个中断服务函数之前,都要加上⼀句起始语句:#pragma vector = <中断向量><中断向量>表⽰接下来要写的中断服务函数是为那个中断源服务的,该语句有两种写法:#pragma vector = 0x7B或者#pragma vector = P1INT_VECTOR前者是中断向量的⼊⼝地址,后者是头⽂件“ioCC2530.h”中的宏定义。
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学习路线-基础实验-定时器控制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中断源
1、中断源CC2530的CPU有18个中断源,每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。
每个中断请求都需要中断使能位来使能或禁止,具体定义如下表:表1(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注意某些外部设备会因为若干事件产生中断请求。
这些中断请求可以作用在端口0、端口1、端口2、定时器1、定时器2、定时器3、定时器4或者无线上。
这些外部设备在相应的寄存器里都有一个内部中断源的中断屏蔽位。
为了启用中断,需要以下步骤:(1)清除中断标志位(Clear interrupt flags);(2)如果有,则设置SFR寄存器中对应的各中断使能位;(3)设置寄存器IEN0、IEN1和IEN2中对应的中断使能位为1;(4)设置全局中断位IEN0.EA为1;(5)在该中断对应的向量地址上,运行该中断的服务程序。
下图给出了所有中断源及其相关的控制和状态寄存器的概述图;当中断服务程序被执行后,阴影框的中断标志位将被硬件自动清除;3、中断处理当中断发生时,CPU就指向表1所描述的中断向量地址。
一旦中断服务开始,就只能够被更高优先级的中断打断。
中断服务程序由指令RETI终止,当执行RETI后,CPU将返回到中断发生时的下一条指令。
当中断发生时,不管该中断使能或禁止,CPU都会在中断标志寄存器中设置中断标志位。
当中断使能时,首先设置中断标志,然后在下一个指令周期,由硬件强行产生一个LCALL 到对应的向量地址,运行中断服务程序。
CC2530中断源教学内容
1、中断源
CC2530的CPU有18个中断源,每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。
每个中断请求都需要中断使能位来使能或禁止,具体定义如下表:表1
3、中断处理
当中断发生时,CPU就指向表1所描述的中断向量地址。
一旦中断服务开始,就只能够被更高优先级的中断打断。
中断服务程序由指令RETI终止,当执行RETI后,CPU将返回到中断发生时的下一条指令。
当中断发生时,不管该中断使能或禁止,CPU都会在中断标志寄存器中设置中断标志位。
当中断使能时,首先设置中断标志,然后在下一个指令周期,由硬件强行产生一个LCALL 到对应的向量地址,运行中断服务程序。
新中断的响应,取决于该中断发生时CPU的状态。
当CPU正在运行的中断服务程序,其优先级大于或等于新的中断时,新的中断暂不运行,直至新的中断的优先级高于正在运行的中断服务程序。
中断响应的时间取决于当前的指令,最快的为7个机器指令周期,其中1个机器指令周期用于检测中断,其余6个用来执行LCALL。
中断标志
表4-1
当同时收到几个相同优先级的中断请求时,采用表4-4所列的轮流检测顺序来判定哪个中断优先响应。
表4-4中断轮流检测顺序。
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中断系统
中断处理
中断标志寄存器4
中断标志寄存器5
#pragma vector = INTERRUPTION_VECTOR
__interrupt void Fn(void)
中断函数编制方法
1 、清除中断标志。 2 、如果有,则设置 SFR 寄存器中对应的各中断
注意某些外部设备有若干事件,可以产生与外设 相关的中断请求。这些中断请求可以作用在端口 0 、端口 1 、端口 2 、定时器 1 、定时器 2 、 定时器 3 、定时器 4 和无线电上。对于每个内部 中断源对应的 SFR 寄存器,这些外部设备都有中 断屏蔽位。
中断屏蔽
中断概览
中断概览
中断使能寄存器0
中断使能寄存器1
中断使能寄存器2
当中断发生时,CPU 就指向中断向量地址。一旦 中断服务开始,就只能够被更高优先级的中断打 断。中断服务程序由中断指令 RETI终止,当 RETI 执行时,CPU 将返回到中断发生时的下一 条指令。
当中断发生时,不管该中断使能或禁止,CPU 都 会在中断标志寄存器中设置中断标志位。如果当 设置中断标志时中断使能,那么在下一个指令周 期,由硬件强行产生一个 LCALL 到对应的向量地 址,运行中断服务程序。
◦ IEN1.P0IE : P0 中断使能 ◦ IEN2.P1IE : P1 中断使能 ◦ IEN2.P2IE : P2 中断使能
除了这些公共中断使能之外,每个端口的位都有位于 SFR 寄存器 P0IEN 、 P1IEN 和 P2IEN 的引脚的中断 使能。 即使配置为外设 I/O 或通用输出的 I/O 引脚使能时都有 中断产生。
CPU 有18个中断源。每个中断源都有它自己的位 于一系列 SFR 寄存器中的中断请求标志。相应标 志位请求的每个中断可以分别使能或禁用。
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的IO中断
cc2530的IO中断通⽤I/O的中断cc2530的CPU有18个中断源,每个中断都可以分别使能和控制。
18个中断源的优先级18个中断源分为6个组,每⼀组有3个中断源,中断优先级可以通过配置相应寄存器来实现中断源的分组编号中断IPG0 REFRR RF DMAIPG1 ADC T1 P2INTIPG2 URX0 T2 UTX0IPG3 URX1 T3 UTX1IPG4 ENC T4 P1INTIPG5 ST P0INT WDT中断优先级是由寄存器IP0和IP1来实现的,IP1_X IP0_x表⽰的数字约⼤,优先级越⾼IP1_X IP0_X 优先级0 0 0(优先级别最低)0 1 11 0 21 1 3(优先级别最⾼)IP1_X与IP0_X中的X代表了中断优先级组的组名,即IPG0~IPG5,设置优先级时3的优先级最⾼,0的优先级最低例://设置IPG3的优先级别最⾼IP1_IPG3=1;IP0_IPG3=1;//设置IPG0的优先级别最低IP1_IPG1=0;IP1_IPG0=0如果在同⼀个组中的优先级同时发⽣,会有⼀个先后,决定这个先后顺序的就是中断轮流探测顺序。
(书中有⼀个表,先不放了,在书上的P.59)I/O中断通⽤I/O设置为输⼊后,可以⽤于产⽣中断,并且通⽤I/O中断还可以设置其触发⽅式,在设置中断时需要将发⽣中断引脚的使能位置置为1,端⼝使能位设置寄存器:P0端⼝中断使能位——IEN1.P0IEP1端⼝中断使能位——IEN2.P1IEp2端⼝中断使能位——IEN2.P2IE这⾥⼀定要注意,IENx寄存器中断使能是对整个端⼝进⾏使能,不是对某⼀个引脚。
中断使能寄存器IEN1控制P0端⼝,定时器1~4和DMA中断的使能和禁⽌,如果需要某⼀位中断使能,只需将IEN1中对应的位设置为1即可。
中断使能寄存器IEN1位名称复位描述7:6 --- 00 保留5 P0IE 0 端⼝0中断使能4 T4IE 0 定时器4中断使能3 T3IE 0 定时器3中断使能2 T2IE 0 定时器2中断使能1 T1IE 0 定时器1中断使能0 DMAIE 0 DMA中断使能IEN1中断设置//设置P0端⼝中断使能IEN1 |= 0x20;中断使能寄存器IEN2位名称复位描述7:6 --- 00 保留5 WDTIE 0 看门狗定时器中断使能4 P1IE 0 端⼝1中断使能3 UTX1IE 0 USART1 TX中断使能2 UTX0IE 0 USART2 TX中断使能1 P2IE 0 端⼝2中断使能0 RFIE 0 RF⼀般中断使能IEN2中断设置//设置P1和P2端⼝中断使能IEN2|=0x12;IEN1使能寄存器可以控制P0端⼝中断使能,IEN2中断寄存器可以控制P1端⼝和P2端⼝中断使能。
CC2530简介
26
将P1_2设为三态输入,读取按键状态
CC2530 主要有四种不同的闪存版本:
CC2530F32/64/128/256(32/64/128/256KB闪存)
其具有多种运行模式,使得它能满足超低功耗系统
的要求。同时CC2530运行模式之间的转换时间很短, 使其进一步降低能源消耗。
2
数字 模拟 混合 RESET_N XOSC_Q2 XSOC_Q1 P2_4 P2_3 P2_2 P2_1 P2_0 输 入 输 出 控 制 器
23
物理存储器
闪存存储器:片上闪存存储器主要是为了保存程序代码和常量数据。闪 存存储器有以下功能:
页面大小:2 KB
闪存页面擦除时间:20ms 闪存芯片(批量)擦除时间:20ms
闪存写时间(4 字节):20μs
数据保留(室温下):100 年 编程/擦除次数:20,000 次
5
CC2530封装
6
CC2530芯片内部结构 CC2530需要极少的外部连接元件,同时有很多典型 电路,其模块大致可以分为三类: 1、CPU和内存相关模块 2、外设,时钟和电源管理相关模块 3、无线信号收发相关模块
7
CC2530的外设(1)
强大的5通道DMA IEEE 802.15.4 MAC定时器,通用定时器(一个16 位定时器,一个8位定时器) IR发生电路(IR 中断) 具有捕获功能的32-kHz睡眠定时器
CC2530简介
1
CC2530芯片
CC2530是基于2.4GHz IEEE802.15.4 、ZigBee和
RF4CE上的一个片上系统解决方案。其特点是以极低 的总材料成本建立较为强大的网络节点。
CC2530 芯片结合了RF 收发器,增强型8051 CPU,
CC2530单片机用定时器产生LED渐亮渐灭
02
LED渐亮渐灭原理
LED的工作原理
LED是一种发光器件,通过电流 的驱动,电子与空穴结合,将能 量以光子的形式释放出来,实现
发光。
LED的发光颜色取决于其制造材 料,常见的有红、绿、蓝等颜色。
LED的正极接高电平,负极接低 电平,当电流从正极流向负极时,
LED灯珠发光。
渐亮渐灭的实现原理
1
性能优化
根据实际需要,优化程序性能,如减少延 时、提高亮灭频率等。
பைடு நூலகம்
05
实验结果与分析
实验过程与步骤
步骤1
首先,我们需要将CC2530单片机与LED灯连接。 将LED的正极连接到单片机的某个GPIO引脚上, 负极接地。
步骤3
接下来,我们需要配置PWM的周期和占空比。通 过设置定时器的计数值和比较寄存器的值,我们 可以控制PWM信号的周期和占空比,从而实现 LED的渐亮渐灭效果。
时间间隔等。
特点
03
低功耗、高性能、易于配置和使用。
定时器的配置方法
配置定时器的步骤
设置定时器的预分频系数、比较值、溢出值等参数,启动定时器。
配置SysTick定时器
设置时钟源、重装载值、使能SysTick定时器。
配置Timer1和Timer2定时器
设置时钟源、预分频系数、比较值、使能定时器等。
注意事项
高速处理能力
CC2530单片机采用高性能的 8051微控制器内核,具有高速 的数据处理能力。
丰富的外设接口
CC2530单片机提供了多种外设 接口,如UART、I2C、SPI等, 方便与其他设备进行通信。
抗干扰能力强
CC2530单片机具有抗干扰能力 强的特点,能够在较为恶劣的 环境下稳定工作。
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 输出应⽤的实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 当中断发生时,不管该中断使能或禁止,CPU 都会在中断 标志寄存器中设置中断标志位。如果当设置中断标志时中 断使能,那么在下一个指令周期,由硬件强行产生一个 LCALL 到对应的向量地址,运行中断服务程序。
• 中断的响应需要不同的时间,取决于该中断发生时 CPU
202的1/2/状4 态。
16
中断响应时间
•
LEDFlag = !LEDFlag;
•
}
•
}
2021/2/4
if(LEDFlag)
{
LED2 = LED1;
LED3 = !LED2;
LED1 = !LED1; LED灯闪烁一下
// 每 1s
LEDFlag = !LEDFlag; // 闪 烁标志变量置0
}
}
}
24
谢谢
2021/2/4
20
中断优先级及其赋值的中断源显示在表 2-7 中。每组赋值 为 4 个中断优先级之一。当进行中断服务请求时 ,不允许 被较低级别或同级的中断打断。
2021/2/4
21
当同时收到几个相同优先级的中断请求时, 采取如同表 28 所列的轮流探测顺序来判定哪个中断优先响应 。
2021/2/4
2021/2/4
11
使能中断步骤: 1 清除中断标志。 2 如果有,则设置 SFR 寄存器中对应的各中断使能位为 1 3 设置寄存器 IEN0 、 IEN1 和 IEN2 中对应的中断使能 位为1 4 设置 IEN0 中的 EA 位为 1 使能全局中断。 5 在该中断对应的向量地址上,运行该中断的服务程序。
机周时间与主振频率有关:机周时间=12/fosc fosc=12MHZ时,1机周=1S; fosc=6MHZ 时,1机周=2S。
2021/2/4
5
STC89C51
• 启动重新赋值:清零
2021/2/4
6
中断系统
日常生活中中断的例子:
你正在专心看书,突 然电话铃响,于是你记下正 在看的书的页数,去接电话, 接完电话后再回来接着看书。
2021/2/4
2
STC89C51 •工作方式的设置:
CC2530 工作方式的设置:
2021/2/4
3
STC89C51
CC2530
2021/2/4
4
STC89C51
计算定时/计数初值
89C51定时/计数初值计算公式:
CC2530
初始化
其中: N与工作方式有关: 方式0时,N=13; 方式1时,N=16; 方式2、3时,N=8。
• 中断的响应需要不同的时间,取决于该中断发生时 CPU 的状态。当 CPU 正在运行的中断服务程序,其优
• 先级大于或等于新的中断时,新的中断暂不运行,直至新 的中断的优先级高于正在运行的中断服务程序。在其
• 他情况下,中断响应的时间取决于当前的指令,最快响应 一个中断的时间是 7 个机器指令周期,其中 1 个机器
CC2530的中断系统和定时器原理
CC2530及STC89C51芯片对比
STC89C51
•定时器个数:2 •工作模式:
•
计数器工作模式
定时器工作模式
•工作方式:4种工作方式(方 式0-方式3)
CC2530
•定时器个数:4
•工作模式:
•
自由运行模式
模模式
正计数/倒计数模式
通道模式控制
输入捕获模式
输出比较模式
2021/2/4
12
中断使能寄存器0
2021/2/4
13
中断使能寄存器1
2021/2/4
14
中断使能寄存器2
2021/2/4
15
中断处理
• 当中断发生时,CPU 就指向中断向量地址。一旦中断服务 开始,就只能够被更高优先级的中断打断。中断服务程序 由中断指令 RETI终止,当 RETI 执行时,CPU 将返回到中 断发生时的下一条指令。
CC2530
CPU 有18个中断源。每个中 断源都有它自己的位于一系 列 SFR 寄存器中的中断请 求标志。相应标志位请求的 每个中断可以分别使能或禁 用。
2021/2/4
10
每个中断请求可以通过设置中断使能 SFR 寄存器的中 断使能位 IEN0 , IEN1 或者 IEN2 使能或禁止。
注意某些外部设备有若干事件,可以产生与外设相关的 中断请求。这些中断请求可以作用在端口 0 、端口 1 、 端口 2 、定时器 1 、定时器 2 、定时器 3 、定时器 4 和无线电上。对于每个内部中断源对应的 SFR 寄存 器,这些外部设备都有中断屏蔽位。
• uint LEDFlag; //标志是否要闪烁
•
T1CTL = 0x05;
• void InitialT1test(void); //初始化函 •
T1STAT= 0x21;
//通道0,中断有
数声明
效,8分频;自动重装模式(0x0000->0xffff)
•}
2021/2/4
23
• void main()
• 指令周期用于探测中断,其余 6 个用来执行 LCALL。
2021/2/4
17
中断标志寄存器4
2021/2/4
18
中断标志寄存器5
2021/2/4
19
中断优先级
•中断组合成为 6 个中断优先组,每组的优先级通过设置寄 存器 IP0 和 IP1 实现。为了给中断(也就是它所在的中断 优先组)赋值优先级,需要设置 IP0 和 IP1 的对应位,如 表 2-6 所示。。
22
CC2530定时中断代码例程
• void InitialT1test(void)
• #include <ioCC2530.h>
•{
• #define uint unsigned int
•
//初始化LED控制端口P1
• #define uchar unsigned char
•
P1DIR = 0x03; //P10 P11 为输出
2021/2/4
8
CPU处理事件的过程,称为CPU的中断响应过程。 对事件的整个处理过程,称为中断处理(或中断服务)。
将能引起中断的事件称为中断源。 CPU现行运行的程序称为主程序。 处理随机事件的程序称为中断服务子程序。
2021/2/4
9
STC89C51
中断源个数:5个 外部输入中断源INT0(P3.2) 外部输入中断源INT1(P3.3) 片内定时器T0的溢出 片内定时器T1的溢出 片内串行口发送或接收中断源
•
•{
•
• InitialT1test(); //调用初始化函 •
数
•
• while(1) //查询溢出
•
ON > 0)
•
{
•
•
•
IRCON = 0; //清溢出标志 •
•
counter++;
•
if(counter==15) //中断计数,
约0.25s
•
{
•
counter =0;
2021/2/4
7
计算机中的中断概念:
CPU正在执行程序时,单片机外部或内部发生的某 一事件,请求CPU迅速去处理。CPU暂时中止当前 的工作,转到中断服务处理程序处理所发生的事 件。处理完该事件后,再回到原来被中止的地方, 继续原来的工作,这称为中断。 CPU处理事件的过程,称为CPU的中断响应过程。 对事件的整个处理过程,称为中断处理(或中断 服务)。
• #define LED1 P1_0
•
P0DIR = 0x10; //P04为输出
• #define LED2 P1_1
• #define LED3 P0_4
• uint counter=0; 次数
• • //统计溢出 • •
LED1 = 1; LED2 = 1; LED3 = 1; //初始化计数器1