CC2540开发板学习笔记(四)——定时器

一、实验内容

     分别使用定时器T1和T3使得LED周期性闪烁

二、实验过程

1、定时器T1(查询IRCON来控制)

(1)需要调配的寄存器

T1CTL(0XE4)Timer1控制寄存器
 BIT3,BIT2:定时器分频倍数选择
00:不分
01:8分频
10:32分频
11:128分频
 BIT1,BIT0:定时器模式选择:
00:暂停
01:自动重装:0X0000—0XFFFF
10:比较计数:0X0000—T1CC0
11:PWM方式
T1STAT(0XAF)Timer1状态寄存器:
 BIT5:OVFIF
定时器溢出中断标志,在数值达到计数终值时置为1.
 

Bit4: 定时器 1 通道 4 中断标志位
Bit3: 定时器 1 通道 3 中断标志位
Bit2: 定时器 1 通道 2 中断标志位
Bit1: 定时器 1 通道 1 中断标志位
Bit0: 定时器 1 通道 0 中断标志位

IRCON(0XCO)中断标志位寄存器;

(2)定时器T1的初始化:

T1CTL=0X0d;
T1STAT=0X21;

(3)代码实现

#include<ioCC2540.h>

#define LED1 P1_0    //定义LED1,方便查阅代码

void Init()//初始化函数
{
  P1SEL = 0X00;    //实现LED的初始化
  P1DIR = 0X01;
  P1INP = 0X00;
  LED1 = 0;
  
  T1CTL = 0X0d;  //128分频,自动重装0X0000-0XFFFF;,时钟频率为16MHZ
  T1STAT = 0X21; //通道0,中断有效
  EA=1;
}


void main(void)
{
  Init();
  unsigned char count=0;

  while(1)
  {
    if(IRCON>0)       //检查是否置位为1
    {
      IRCON=0;
      count++;         //由于分频128后,已经满足1s的闪烁周期。

      if(count>=1)
      {
        count=0;
        LED1=~LED1;
      }
    }
  }
}

image

 

2、定时器T3(中断方式)

(1)需要调配的寄存器

T3CTL(0XCB)Timer3:控制寄存器
 BIT7,BIT6,BIT5:定时器时钟分频倍数选择

000:不分频

001 :2 分频

010 : 4 分频

011 : 8分频

100 :16 分频

101 :32 分频

110 : 64 分频

111 :128分频

 BIT4:T3起止控制位
 BIT3:溢出中断掩码
0:关中断溢出
1:开中断溢出
 BIT2:清计数值,高电平有效
 BIT1,BIT0:T3模式选择:

00 :自动重装 0X00 -0XFF
01 : DOWN ( 从 T3CC0 到 0X00 计数一次 )
10 : 模计数(反复从 0X00 到 T3CC0 计数)
11 : UP/DOWN( 反复从 0X00 到 T3CC0计数再到 0X00)

T3CCTL0(0XCC)T3通道 0 捕获/比较控制寄存器
 BIT6:T3通道 0 中断掩码
0:关中断,1:开中断
 BIT5,BIT4,BIT3:T3通道 0 比较输出模式选择
 BIT2:T3通道 0 模式选择:
0:捕获     1:比较
 BIT1,BIT0:T3通道 0 捕获模式选择:

00 没有捕获

01 上升沿捕获

10 下降沿捕获

11 边沿捕获

T3CC0(0XCD)T3 通道 0 捕获 / 比较寄存器
T3CCTL1(0XCE)T3通道 1 捕获/比较控制寄存器
 BIT6:T3通道1中断掩码
0:关中断,1:开中断
 BIT5,BIT4,BIT3:T3通道 1 比较输出模式选择
 BIT2:T3通道 1 模式选择:
0:捕获     1:比较
 BIT1,BIT0:T3通道 1 捕获模式选择:

00 没有捕获

01 上升沿捕获

10 下降沿捕获

11 边沿捕获

T3CC1(0XCF)T3 通道 1 捕获 / 比较寄存器

定时器T3有 4种工作模式:分别是自由、正计数 /倒计数模式、 倒计数模式。
image

(2)代码实现(使用自由模式)

无法解析此远程名称: 'util.cnblogs.com#include<ioCC2540.h>

#define LED1 P1_0    //定义LED1,方便查阅代码

unsigned char count=0;

void Init()//初始化函数
{
  P1SEL = 0X00;    //实现LED的初始化
  P1DIR = 0X01;
  P1INP = 0X00;
  LED1 = 0;
  
  T3CTL = 0X08;  //开溢出中断
  T3IE = 1;      //开纵中断和T3中断
  T3CTL |= 0XE0; //开128分频,128/(16*10e6)*N=0.5s,N=65536;
  T3CTL &= ~0x03; //自动重装   
  T3CTL |= 0X10; //2分频(16MHZ),然后就是开始启动
  EA=1;          //打开中断总闸
  
}


void main(void)
{
  Init();

  while(1)
  {
   
  }
}
  

#pragma vector = T3_VECTOR
__interrupt void fu()
{
  IRCON = 0x00;   //清除中断标志
  count++;
  if(count>250)
  {
    count = 0;
    LED1=~LED1;
  }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CC2540是一款蓝牙低功耗芯片,可以用来实现蓝牙设备的开发。在进行开发之前,需要先了解CC2540开发板的使用方法。 首先,我们需要准备一个CC2540开发板,如下图所示: ![CC2540开发板](https://img-blog.csdn.net/20180416113413996?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 接下来,我们将通过点亮LED来进行简单的实验。 首先,我们需要连接开发板和电脑,如下图所示: ![连接开发板和电脑](https://img-blog.csdn.net/20180416113643557?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,我们需要安装CC2540开发环境。可以通过以下网址下载并安装:https://www.ti.com/tool/CCSTUDIO。 在安装完成后,打开CCS,点击File -> New -> CCS Project,如下图所示: ![新建CCS Project](https://img-blog.csdn.net/20180416114258105?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,选择CC2540,如下图所示: ![选择CC2540](https://img-blog.csdn.net/20180416114402654?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 接下来,填写项目名称和路径,如下图所示: ![填写项目名称和路径](https://img-blog.csdn.net/20180416114500558?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,选择SimpleBLEPeripheral,并设置为Debug状态,如下图所示: ![选择SimpleBLEPeripheral](https://img-blog.csdn.net/20180416114647467?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 在完成以上步骤后,我们就可以开始进行编程了。 首先,打开SimpleBLEPeripheral.c文件,并在main函数中添加以下代码: ``` // P1.0口输出高电平,点亮LED P1DIR |= BIT0; P1OUT |= BIT0; ``` 然后,点击Project -> Build Project进行编译,在编译完成后,点击Debug -> Debug Active Project进行调试。 最后,我们就可以看到LED点亮了!如下图所示: ![LED点亮](https://img-blog.csdn.net/20180416115558662?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 以上就是CC2540开发板学习笔记的第一篇,希望对大家有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值