1. 程式人生 > >STM32之Systick定時器解析

STM32之Systick定時器解析

在ARM Cortex-M3核心中有一個Systick定時器,它是一個24位的倒計數定時器,當計數到0時,它就會從Load暫存器中自動重灌定時初值,只要不把CTRL暫存器中的ENABLE清0,它就永不停。對於滴答定時器的理解主要分為下面幾項:

1.滴答定時器的時鐘來源


看上面的圖會有一個錯覺,以為滴答定時器是系統時鐘的1/8,其實不是,滴答定時器的時鐘既可以是HCLK/8,也可以是HCLK,這個是通過CTRL暫存器進行設定的,瞭解這一點,對於作業系統的時鐘計算很重要,因為要精確計算時鐘時間。

2.滴答定時器的暫存器

從這裡就能看出,時鐘源有兩種選擇



3.滴答定時器的庫函式

  (1)暫存器定義在哪?————在core_cm3.h中。

  1. typedefstruct {   
  2.  __IO uint32_t CTRL;      
  3.  __IO uint32_t LOAD;     
  4. __IO uint32_t VAL;      
  5. __I  uint32_t CALIB;   
  6. } SysTick_Type; …   
  7. #define SysTick  ((SysTick_Type *) SysTick_BASE) 
(2)設定步驟

①.選擇時鐘源

②設定過載數(reload)

③開啟中斷

④啟動滴答定時器