1. 程式人生 > >TI CC2530 學習筆記-4-NewBit-CC2530-Timer2-查詢方式

TI CC2530 學習筆記-4-NewBit-CC2530-Timer2-查詢方式

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 基礎例程