TI CC2530 学习笔记-4-NewBit-CC2530-Timer2-查询方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21352095/article/details/83036467

TI CC2530 学习笔记-目录

TI CC2530 学习笔记-4-NewBit-CC2530-Timer2-查询方式

通过CC2530定时器2来实现周期溢出,用此信号来控制LED灯,每秒改变状态一次。定时器2别名MAC-TIMER,一般应用中尽量不使用它。

  1. 配置定时器和LED
  halMcuWaitUs(10000); //等待时间稳定,约10ms 
 CLKCONCMD &= ~0x7F;   //选择外部32MHZ时钟, 不分频
                        //TICKSPD修改为0x0,不分频,即定时器标记频率为32MHz
  while( (CLKCONSTA & 0x7F) != 0x00 ); //切换时钟源后再次等待稳定
  P0DIR |= 0x40; //配置IO为输出

  //定时器2只能运行在32MHz时钟,时间为1/32000000s
  T2MSEL = 0x02;//设置为访问定时器周期
  T2M0 = LOWER_BYTE(50000); //低8位,设定溢出时间50000*1/32000000s
  T2M1 = UPPER_BYTE(50000);//高8位
  T2MSEL = 0x20;//设置为访问溢出周期
  //溢出计数是24位的,这里只需要16位
  T2MOVF0 = LOWER_BYTE(640);//设置中断所需溢出次数
  T2MOVF1 = UPPER_BYTE(640);
  T2MOVF2 = 0;//最高的8位不需要
  T2IRQM |= 0x08;//使能 TIMER2_OVF_COMPARE1 中断
  T2CTRL |= 0x01; //启动T2
  LED_R_IO = LED_R_ACTIVE;点亮LED
  1. 在main函数的while循环里检测定时器溢出标志位
while(1)
  {
    if (T2IF == 1)//判断是否溢出
    {
    //在止执行单步调试可能会导致检测不到T2中断,学习使用时请不要在本行及上一行设断点
      T2IRQF = 0;    //清除中断标志
      T2IF = 0;       //清除中断标志
      LED_R_IO = !LED_R_IO;//翻转LED
    }
  }
  1. 代码:NewBit-ZDK CC2530 基础例程

猜你喜欢

转载自blog.csdn.net/qq_21352095/article/details/83036467
今日推荐