CC2530之定时器T1

CC2530之定时器T1

在本次学习中,主要通过定时器来控制LED的亮灭。
首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。
CC2530之定时器T1_第1张图片

接下来,先查看与LED(P1_0)配置相关的寄存器。

  1. 端口1功能选择寄存器(P1SEL)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。
    CC2530之定时器T1_第2张图片

  2. 端口1方向选择寄存器(P1DIR)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。
    CC2530之定时器T1_第3张图片

  3. 端口1输入模式寄存器(P1INP)。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为上拉/下拉模式,若设置为1,则将相关引脚设为三态模式,其中P1_0和P1_1没有上拉/下拉功能,可以不用配置,默认值都为0。
    CC2530之定时器T1_第4张图片

再来看看与定时器相关的寄存器
1. 定时器1的控制寄存器(T1CTL)_。
该寄存器的bit3和bit2位用来设置分频值
- 00:分频值为1
- 01:分频值为8
- 10:分频值为32
- 11:分频值为128
bit1和bit0位用来设置计数模式
- 00:暂停计数
- 01:自由计数,从0x0000计数到0xFFFF,不断重复计数。
- 10:模计数,从0x0000计数到T1CC0,不断重复计数。
- 11:向上/向下计数,从0x0000计数到T1CC0再从T1CC0计数到0x0000,不断重复。
CC2530之定时器T1_第5张图片

  1. 定时器1状态标志寄存器(T1STAT)。

    • bit5:定时器1的溢出中断标志
    • bit4:定时器1通道4的中断标志
    • bit3: 定时器1通道3的中断标志
    • bit2:定时器1通道2的中断标志
    • bit1:定时器1通道1的中断标志
    • bit0:定时器1通道0的中断标志
      CC2530之定时器T1_第6张图片
  2. 中断标志4寄存器(IRCON)。

    • bit1:定时器1中断标志,当中断发生时置为1,当CPU向量指向中断服务例程时置为0
      CC2530之定时器T1_第7张图片
/*设置定时器,当发生溢出中断时,LED进行一次翻转*/
#include 

typedef unsigned char uchar;
typedef unsigned int uint;

#define LED1 P1_0

void LEDInit(void)
{
  P1SEL &= ~0x01;
  P1DIR |= 0x01;
}

void TIM1Init(void)
{
  T1CTL |= 0x0d;//128分频,自由计数模式
}

void main(void)
{
  LEDInit();
  TIM1Init();
  while(1)
  {
    if(IRCON>0)   //是否发生中断
    {
      LED1 = !LED1;
      IRCON = 0;
    }      
  }
}

你可能感兴趣的:(CC2530)