TI CC2530 学习笔记-11-NewBit-CC2530-UART0-定时发送

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

TI CC2530 学习笔记-目录

TI CC2530 学习笔记-11-NewBit-CC2530-UART0-定时发送

功能:用定时器3制作一个时钟,每当秒更新时将时间打印后从串口送出。使用指令可以设置时间,设置格式为"#hh:mm:nn"。

  1. 配置定时器,UART,LED
  halMcuWaitUs(10000);  //等待时间稳定,约10ms
  CLKCONCMD &= ~0x47;   //选择外部32MHZ时钟, 不分频
                        //TICKSPD不改变,保持为0x01,即定时器标记频率为16MHz
  while( (CLKCONSTA & 0x47) != 0x00 ); //切换时钟源后再次等待稳定
  P0DIR |= 0x40;    //配置IO为输出
/* 初始化串口 */
  P0SEL |= 0x0C; //将P02,P03设为外设功能
  PERCFG &= ~0x01;   //串口0占用P02 P03
  U0CSR = 0X80;    //USART模式设为UART模式
  U0UCR = 0x00;    //禁用流控,禁用奇偶检验,1位停止位
  U0CSR |= 0x40;    //允许接收
  U0GCR   |= 8;     //9600
  U0BAUD  =  59;
  IEN0 |= 0x04;     //开串口0接收中断
  /* 初始化定时器4*/
  T4CTL = 0xE2;   //128分频(0.125Mhz),模模式
  T4CCTL0 = 0x04; //比较模式
  T4CC0 = 125;    //溢出值
  T4CTL |= 0x08;
  T4CCTL0 |= 0x40;//开T4通道0中断
  T4IE = 1;   //开T4中断
  /* 初始化定时器3 */
  T3CTL = 0xE2;   //128分频(0.125Mhz),模模式
  T3CCTL0 = 0x04; //比较模式
  T3CC0 = 125;    //溢出值
  T3CTL |= 0x08;  //打开溢出中断
  T3CCTL0 |= 0x40;//开T3通道0中断
  T3IE = 1;        //定时器3中断使能
  T3CTL |= 0x10;  //启动定时器
  IEN0 |= 0X80;   //开总中断
  LED_R_IO = LED_R_ACTIVE;//点亮LED

2.在main函数的while循环输出时间和检测是否有设置时间

  while(1)
  {
    if (culUartRxBufferRead(uartRxBuf, &length) == SUCCESS)//UART收到数据
    {
      if (length == 9)//判断数据长度
      {
        culTimeSet(uartRxBuf); //设置时间
      }
    }
    if (gTimeBrush == 1)//判断刷新时间标志位
    {
      culTimePutOut();//打印时间
      gTimeBrush = 0; //清除标志位
    }
  }
}
  1. 定时器3中断函数,用于计算时分秒
#pragma vector = T3_VECTOR
 __interrupt void T3_ISR( void )
{
  T3IF = 0;			//可不清中断标志,硬件自动完成
  gMsCountForTime ++;
  if (gMsCountForTime >= 1000)//1000ms
  {
    gMsCountForTime = 0;
    gTimeBrush = 1;
    if (gTime[2] < 59)
    {
      gTime[2] ++;            //秒加1
    }
    else
    {
      gTime[2] = 0;
      if (gTime[1] < 59)
      {
         gTime[1] ++;         //分钟加1
      }
      else 
      {
        gTime[1] = 0;
        if (gTime[0] < 23)
        {
          gTime[0] ++;        //小时加1
        }
        else
        {
          gTime[0] = 0;       //24:00 -> 0:00
        }
      }             
    }
  }
}

代码:NewBit-ZDK CC2530 基础例程

猜你喜欢

转载自blog.csdn.net/qq_21352095/article/details/83046422