定时器 T3定(8 位)通过中断方式控制 LED - 深圳led背光源生产厂家,lcd显示屏,lcm液晶显示模块|模组厂-z6尊龙官网
  1. z6尊龙官网

    1. 
        •  深圳市z6尊龙官网产品分类列表

          联系我们

          公司名称 :深圳市z6尊龙官网光电有限公司
          厂址 :中国.广东省.深圳市宝安西乡臣田工业区

          营销专线
          吴先生 手机:13538278608
          胡先生 手机:13823360976
          固定电话:86-0755-28246146/
          28246906/28246536/28247229
          电话传真:86-0755-89715671
          投诉与售后咨询 黄小姐:13823217679
          胡先生:13928021976

          Email:bly@tuanm9.com

          公司网址 :https://www.tuanm9.com/

          定时器 T3定(8 位)通过中断方式控制 LED

          定时器 T3定(8 位)通过中断方式控制 LED

          CC2530的T3定时器(8位)需要了解T3CTL,T3CCTL0,T3CC0,T3CCTL1,T3CC寄存器.定时器3/4是8位定时器,具有定时器/计数器/PWM功能 。

          定时器2又称 MAC定时器 ,是专门为支持IEEE 802.15.4 MAC 中的事件跟踪协议而特别设计的。该定时器具有一个可以用来记录已经发生的周期数的8位溢出计数器;有一个16位捕获寄存器 ,用来记录一个帧开始定界符接收/发送的精确时间或者传输完成的精确时间;还含有一个16位输出比较寄存器 ,用来在特定时间对无线模块产生各种命令选通信号(开始接受 ,开始发送等) 。关于定时器2,想了解的话可以参看有关资料。

          有没有发现只要寄存器配置对了剩下的就没什么问题了 。

          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:自动重装 0×00-0xFF

          01: DOWN (从T3CC0 到0X00计数一次)

          10 : 模计数(反复从 0X00到T3CC0 计数)

          11 : UP/DOWN(反复从0X00到T3CC0 计数再到0X00)

          T3CCTL0(0xCC) 是 T3 通道 0 捕获/ 比较控制寄存器

          Bit6: 通道0 中断屏蔽 0:中断禁止 1 :中断使能

          Bit[5: 3] T3 通道 0 比较输出模式选择

          Bit2: T3 通道 0 模式选择: 0:捕获 1 :比较

          Bit[1:0] T3 通道 0 捕获模式选择

          00 没有捕获 01 上升沿捕获 10 下降沿捕获 11 边沿捕获

          T3CC0(0xCD) 为定时器 3 通道 0 捕获/比较值

          定时器捕获/比较值通道 0。当 T3CCTL0.MODE=1(比较模式)时写该寄存器会导致 T3CC0.VAL[7:0]更新到入值延迟到 T3CNT.CNT[7:0]=0×00。

          T3CCTL1(0xCE)为T3 通道 1 捕获/ 比较控制寄存器

          Bit6: 通道1中断屏蔽 0:中断禁止 1 :中断使能

          Bit[5: 3] T3 通道1 比较输出模式选择

          Bit2: T3 通道 1 模式选择: 0:捕获 1 :比较

          Bit[1:0] T3 通道 1 捕获模式选择 00 没有捕获 01 上升沿捕获

          10 下降沿捕获 11 边沿捕获

          T3CC1(0xCF) 定时器 3 通道 1 捕获/比较值

          定时器捕获/比较值通道 1 。当 T3CCTL1.MODE=1(比较模式)时写该寄存器会导致 T3CC1.VAL[7:0]更新写入值延迟到 T3CNT.CNT[7:0]=0×00。

          对 T3 进行配置如下 ,由于定时器 T3 为8位所以配置稍有不同。

          T3CTL |= 0×08 ; //开溢出中断

          T3IE = 1; //开总中断和 T3 中断

          T3CTL |= 0xE0; //128 分频,128/16000000*N=0.5S,N=62500

          T3CTL &= ~0×03; //自动重装 00->0xff 62500/255=245(次)

          T3CTL |= 0×10; //启动

          EA = 1; //开总中断

          /****************************************************************************

          * 描 述: 定时器T3通过中断方式控制LED闪烁

          ****************************************************************************/

          #include

          typedef unsigned char uchar;

          typedef unsigned int uint;

          #define LED1 P1_0 // P1.0口控制LED1

          uint count; //用于定时器计数

          /****************************************************************************

          * 名 称: InitLed()

          * 功 能: 设置LED灯相应的IO口

          * 入口参数: 无

          * 出口参数: 无

          ****************************************************************************/

          void InitLed(void)

          {

          P1DIR |= 0×01; //P1.0定义为输出

          LED1 = 1; //使LED1灯上电默认为熄灭

          }

          /****************************************************************************

          * 名 称: InitT3()

          * 功 能: 定时器初始化,系统不配置工作时钟时默认是2分频,即16MHz

          * 入口参数: 无

          * 出口参数: 无

          ****************************************************************************/

          void InitT3()

          {

          T3CTL |= 0×08 ; //开溢出中断

          T3IE = 1; //开总中断和T3中断

          T3CTL |= 0xE0; //128分频,128/16000000*N=0.5S,N=62500

          T3CTL &= ~0×03; //自动重装 00->0xff 62500/255=245(次)

          T3CTL |= 0×10; //启动

          EA = 1; //开总中断

          }

          //定时器T3中断处理函数

          #pragma vector = T3_VECTOR

          __interrupt void T3_ISR(void)

          {

          IRCON = 0×00; //清中断标志, 也可由硬件自动完成

          if(count++ > 244) //245次中断后LED取反,闪烁一轮(约为0.5 秒时间)

          { //经过示波器测量确保精确

          count = 0; //计数清零

          LED1 = ~LED1; //改变LED1的状态

          }

          }

          /****************************************************************************

          * 程序入口函数

          ****************************************************************************/

          void main(void)

          {

          InitLed(); //设置LED灯相应的IO口

          InitT3(); //设置T3相应的寄存器

          while(1)

          {};

          }

          
          首 页 | 公司简介 | 企业荣誉 | 产品中心 | 新闻中心 | 联系我们 | 集团首页

          版权所有 深圳市z6尊龙官网光电有限公司     粤ICP备08129267号-1
          1. XML地图