CC2530 定时器应用

任务分析

定时器控制流水灯

知识储备

相关寄存器知识

由于我手上的开发板LED1,LED2,KEY1对应的引脚分别是P1_0,P1_1,P1_2。所以我下面主要介绍和P1相关的寄存器。其他端口类似。

T1CTL-定时器1的控制和状态

在这里插入图片描述
T1CTL = 0x0e即可使定时器1处于模模式,128分频

T1CCTL0-定时器1通道0捕获/比较控制

在这里插入图片描述
即令T1CCTL0 |= 0x04;即可开启定时器1通道0的比较模式

T1CC0H和T1CC0L-定时器1通道0捕获/比较值的高低位

在这里插入图片描述
即令T1CC0L = 0xd4;T1CC0H=0x30;就可以使定时器每过0.1s触发一次中断
根据公式
在这里插入图片描述
(CC2530晶振频率为16MHz。上面我们定义了128分频,所以定时器计数周期如上.)

最后再加上下面两行代码即可

  T1IE = 1;//定时器1中断使能
  EA = 1;//开启总中断

相关寄存器总结

1.开启总中断EA = 1;
2.开启定时器中断T1IE = 1;
3.设定定时器1为模模式,128分频T1CTL = 0x0e;
4.开启定时器1通道0的比较模式T1CCTL0 |= 0x04;
5.设定定时器1通道0捕获/比较值的高低位T1CC0L = 0xd4;T1CC0H = 0x30;

代码

#include <ioCC2530.h>

#define KEY1 P1_2 
#define LED1 P1_0
#define LED2 P1_1

unsigned int TimeFlag = 0;

void PortInit()
{
  P1SEL &= ~0x07;
  P1DIR |= 0x03;
  P1DIR &= ~0x04;
}

void Timer1Init()
{
  T1CC0L = 0xd4;//最大计数值的低8位
  T1CC0H = 0x30;//最大计数值的高8位
  //系统频率是16MHz,下面T1CTL = 0x0e定义了分频系数是128,可以根据计算公式算出来
  //0.1s的值是0x30d4
  T1CCTL0 |= 0x04;//开启输出0的通道比较模式
  T1IE = 1;//定时器1中断使能
  EA = 1;//开启总中断
  T1CTL = 0x0e;//模模式,128分频
}

void delay(unsigned int i)
{
  while(i--);
}

#pragma vector = T1_VECTOR
__interrupt void T1_vector()
{
  T1STAT &= ~0x20;
  TimeFlag++;
  if(TimeFlag == 10)
  {
    LED1 = ~LED1;
  }
}

void main()
{
  PortInit();
  Timer1Init();
  LED1 = 1;
  LED2 = 1;
  while(1)
  {
    
  }
}

部分代码分析

定时器初始化函数

void Timer1Init()
{
  T1CC0L = 0xd4;//最大计数值的低8位
  T1CC0H = 0x30;//最大计数值的高8位
  //系统频率是16MHz,下面T1CTL = 0x0e定义了分频系数是128,可以根据计算公式算出来
  //0.1s的值是0x30d4
  T1CCTL0 |= 0x04;//开启输出0的通道比较模式
  T1IE = 1;//定时器1中断使能
  EA = 1;//开启总中断
  T1CTL = 0x0e;//模模式,128分频
}

中断回调函数

#pragma vector = T1_VECTOR
__interrupt void T1_vector()
{
  T1STAT &= ~0x20;
  TimeFlag++;
  if(TimeFlag == 10)
  {
  	LED1 = ~LED1;
  }

}

其中 T1STAT &= ~0x20; 作用置1定时器1数据溢出标志位
在这里插入图片描述

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值