TI CC2530基础实验(定时器3中断方式——自由运行模式)

本实验实现通过CC2530的定时器3(8位)查询方式控制LED1以1S的周期性闪烁,此实验使用有关定时器3的2个寄存器T3CTL(定时器3控制寄存器),IEN1(中断使能1寄存器)。

有关CC2530的GPIO基本知识、普通GPIO操作有关寄存器的介绍、IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作——点亮led灯)

原理图

寄存器分析

程序

#include <ioCC2530.h>

/***********************************************
 * 程序说明:T3中断方式控制LED1以1S的周期性闪烁
 **********************************************/

#define LED1 P1_0

unsigned char count = 0;//用来记录定时器溢出次数

/*********************************************************
 * 函数描述:初始化LED1
 * 备注:系统不配置工作时钟时使用内部 RC 振荡器,即16MHz
 *********************************************************/
void LED1Init(void)
{
  P1SEL &= ~0x01;  //功能:普通I/O
  P1DIR |= 0x01;   //方向:输出
  LED1 = 1;        //使其属于灭状态
}

/***********************************
 * 函数描述:定时器3初始化
 **********************************/
void T3Init(void)
{
  EA = 1;              //不管三七二十一,先开启总中断
  /*使能定时器3中断*/
  IEN1  |= 0x08;       //或T3IE = 1;
  /*使能溢出中断,默认是使能溢出中断*/
  T3CTL |= 0x08;      //查看T3CTL寄存器,需要使能溢出中断

  /*设置分频、自由运行模式*/
  T3CTL |= 0xE0;      //128分频
  T3CTL &= ~0x03;     //自由运行模式

  /*设置好定时器3,开启定时器3*/
   T3CTL |= 0x10;      //查看T3CTL寄存器,需要启动定时器
}

/***********************************
 * 函数描述:定时器3中断处理函数
 **********************************/
#pragma vector = T3_VECTOR
__interrupt void T3_ISR(void)
{
  //IRCON = 0; //清中断,似乎硬件帮我们将IRCON对应的中断标志位清除了
  if (++count > 254)
  {
    count = 0;
    LED1 = !LED1;
  }
}

void main()
{
  LED1Init();
  T3Init();
  for (;;);
}

其中定时器3中断服务程序中的254是怎么来的呢?

系统在不配置工作频率时默认为2分频,即16M=32M/2。1/(16M/128)*N = 0.5s(每隔0.5秒一次开,一次关,这样看起来就像以1S周期性闪烁),得到 N = 65200,即而每次溢出递增次数为256(0x00~0xFF),所有总共需要溢出的次数 = 65200/256 = 254.

注意:每创建一个新工程都要配置IAR(做基础实验),TI CC2530基础实验(普通GPIO操作——点亮led灯)也有IAR相关配置步骤

总结:

1、当系统不配置工作频率时,即为16M工作频率下,定时器每递增需要时间为1/(16000000/128) = 8us。当采用自由运行模式下,每溢出一次需要时间为:2ms

2、定时器3采用中断方式,初始化需要做的事情:1)开启总中断 EA = 1;  2)使能定时器3中断   3)使能溢出中断(默认使能)   4)设置分频、运行模式    5)最后启动定时器3

时间: 2024-11-06 19:21:55

TI CC2530基础实验(定时器3中断方式——自由运行模式)的相关文章

TI CC2530基础实验(定时器1查询方式——自由运行模式)

本实验实现通过CC2530的定时器1(16位)查询方式控制LED1以1S的周期性闪烁,此实验使用的三个寄存器T1CTL(定时器1控制寄存器),T1STAT(定时器1状态寄存器),IRCON. 有关CC2530的GPIO基本知识.普通GPIO操作有关寄存器的介绍.IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作--点亮led灯) 电路原理图: 寄存器分析: 1.定时器1控制寄存器 定时器1的T1CTL寄存器下的模式分析: [自由运行模式]:

TI CC2530基础实验(GPIO通用I/O中断操作——一个中断处理程序处理一个端口的多个中断)

有关CC2530的GPIO基本知识.普通GPIO操作有关寄存器的介绍.IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作--点亮led灯) 有关CC2530通用I/O中断操作的基础知识.相关寄存器介绍:TI CC2530基础实验(GPIO通用I/O中断操作--按键控制灯的亮灭) 电路原理图: 程序: /************************************** * 基础实验只需要添加以下这个头文件即可 **********

TI CC2530基础实验(普通GPIO操作——按一下按键亮一下灯)

有关CC2530的GPIO基本知识.普通GPIO操作有关寄存器的介绍.IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作--点亮led灯) 电路原理图: 分析:需要按一下按键亮一下灯,并且不采用中断方式,即我们需要实时去监测按下是否被按下(P0_4为低电平表示按下,高电平表示松开). 设置: 灯LED1对应的P1_0引脚为普通I/O.方向为输出 按键S1对应的P0_4引脚为普通I/O.方向为输入 程序: /*****************

[ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)

上一节讲了16位定时器1,本节讲8位定时器3和定时器4! 1.综述 Timer 3 and Timer 4 are two 8-bit timers(8位定时器). Each timer has two independent capture/compare channels(独立的捕获/比较通道),each using one I/O pin per channel. Features: · Two capture/compare channels· Set, clear or toggle

[ZigBee] 4、ZigBee基础实验——中断

前言 上一篇介绍了CC2530的IO的基础知识,并用LED的控制来展示如何配置并控制GPIO的输出,用KEY状态的读取实验来展示如何读取GPIO的状态.从上一节的KEY状态读取的代码看出是采用轮训方式的,这种方式是很浪费资源,本节将介绍一种中断方式来替换轮训的方案. 一.中断 电路依然没变,若要使用CC2530的外部中断需要使用P0IEN.PICTL.P0IFG.INE1寄存器. 按键中断初始设置为: 1 /********************************************

[ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)

1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于范围广泛的控制和测量应用,可用的五个通道的正计数/倒计数模式将允许诸如电机控制应用的实现. 定时器1 的功能如下: • 五个捕获/比较通道• 上升沿.下降沿或任何边沿的输入捕获• 设置.清除或切换输出比较• 自由运行.模或正计数/倒计数操作• 可被1,8,32 或128 整除的时钟分频器• 在每个捕

定时器的应用---中断方式---让8个LED灯,左右各4个来回亮

/*************************** 中断方式 是主程序专注于其他的事情, 待定时器中断时才执行中断子程序. *****************************/ #include<reg51.h> #define LED P1 #define count 50000 // 50000 * 1us = 0.05s 机器周期1us 12MH晶振 #define TH_M1 (65536-count)/256 //TMOD 寄存器 方式 1 , 2^8 = 256 TH

S5PV210 串口实验(中断方式)

结合之前的串口实验(轮询方式)与中断体系分析,我们来做下中断方式的串口接收实验. start.S .global _start .global IRQ_handle _start: /* 关 Watch Dog */ ldr r0, =0xE2700000 mov r1, #0 str r1, [r0] /* 设置系统模式栈指针 */ ldr sp, =0x40000000 /* 开 IRQ 总中断开关 */ mov r0, #0x53 msr CPSR_cxsf, r0 /* 时钟初始化 */

「ZigBee模块」基础实验(3)外部中断

1.实现功能 使用中断方式实现: 按键KEY1按下LED1依次亮灭 按键KEY2按下LED2依次亮灭 2.元件连接方式 P1_0连接LED1 P1_1连接LED2 P0_0连接KEY1 P0_1连接KEY2 3.中断相关寄存器 PXIEN P0IEN P1IEN P2IEN 地址 0xAB 0x8D 0xAC PX[7:0] 各个控制口中断使能 (0:中断禁止 1:中断使能) PICTL: D0~D3设置各个端口的中断触发方式(0:上升沿触发 1:下降沿触发) D7控制I/O引脚在输出模式下的驱