天天看點

SYD8801 systick tick timer 使用說明

SYD8801是一款低功耗高性能藍牙低功耗SOC,內建了高性能2.4GHz射頻收發機、32位ARM Cortex-M0處理器、128kB Flash存儲器、以及豐富的數字接口。SYD8801片上內建了Balun無需阻抗比對網絡、高效率DCDC降壓轉換器,适合用于可穿戴、物聯網裝置等。具體可咨詢:http://www.sydtek.com/

SYD8801 systick tick timer 使用說明

    和其他的以ARM MO為核心的MCU一樣,SYD8801内部也有MO自帶的systick tick timer,這裡使用方法也十分簡單。

   注意:在M0中,systick tick timer是一個24bit的遞減計數器:

SYD8801 systick tick timer 使用說明

   注意:system_tick存在一個缺陷:如果想動态改變這個定時器的周期,必須要留足夠的時間給硬體反應,否則直接改可能無效!

  主函數如下:

//static void timer0_callback(void);

int main()

{

//    uint8_t i=0;

    led_config(LEDALL); 

    Systick_Init();

//    if(LPOCaliWaitUS(1000)){

//        for(i=0;i<6;i++){

//            led_turn(LEDALL);

//            delay_ms(300);

//        }

//    }else{

//        for(i=0;i<20;i++){

//            led_turn(LEDALL);

//            delay_ms(300);

//        }

//    }

//    

//    timer_0_enable(0x1F40, timer0_callback); // 8000 /32.768 ms =  244.140625 ms

    __enable_irq();

    while(1)

    {

    }

}

 void SysTick_Handler(void)

 {

      GPO_CTRL->GPO_7 = ~GPO_CTRL->GPO_7;

 }

    這裡在主函數中初始化了systick tick timer,然後在其中斷函數中翻轉GPIO7這個管腳的狀态

    其中初始化函數如下:

void Systick_Init(void)

{

//  if (SysTick_Config(SystemCoreClock / 1000))//1ºÁÃë

//  {

//   

//    while (1);

//  }

//    

    if (SysTick_Config(SystemCoreClock))

  {

    while (1);

  }

}

    systick tick timer的時鐘就是MCU運作的時鐘,傳入的SystemCoreClock變量是定時器的分頻值,其中SysTick_Config函數是MO自帶函數,如下:

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)

{

  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)

  {

    return (1UL);                                                  

  }

  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                        

  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);

  SysTick->VAL   = 0UL;                                            

  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |

                   SysTick_CTRL_TICKINT_Msk   |

                   SysTick_CTRL_ENABLE_Msk;                        

  return (0UL);                                                    

}

    最後這裡上傳本部落格使用到的源代碼:http://download.csdn.net/detail/chengdong1314/9890438