天天看點

STM32學習--systick

用途:

  系統定時器(systick)是在Cotrx-m3内的定時器,屬于核心定時器,其設計目的是為作業系統服務,為其提供“心跳”。作業系統心跳有兩個特點,第一個是,時間恒定,産生周期性的中斷,二是使用者程式不能随意通路。在核心中設計該定時器,主要是可友善同核心的器件進行程式移植。該定時器特點是在睡眠狀态也不會停止,會産生異常中斷。

  如果不使用作業系統,可以當做普通定時器使用。

原理:

  它是因為它是一個24位計數器,采用倒計時方式,初值設定,使能後,經過一個系統周期,計數計數值減1,技術倒計數到零時計數器自動重新裝載初值,并繼續計數;可以觸發中斷。

使用方法:

  一 設定時鐘源,其實中時鐘可以為核心上自由運作時鐘(FCLK),F1中它等于HCLK,二選擇外部時鐘,就是cm3上的SYCLK,也就是HCLK/8;

  二 設計設定,自動裝載初值;

  三 編寫中斷處理函數

  四 使能計數器。

  

  其還有校準值設定的功能,在TENMS中設定10ms倒計數的格數,這根據核心的輸入信号提供該值。

  

  作業系統一般的心跳為ms級,如cosII為5ms。是以一般配置中斷時間為ms級(根據作業系統來選擇)。在使用systick進行延時,遇到小于中斷時間情況可以使用時鐘摘取法,其方法就是在延時函數開始讀取一次systick的SysTick-> VAL值,一直讀取,直至SysTick-> VAL值大于初值加上定時值為止。

  Systick的配置、使用比較簡單,就不貼出一一分析了。

繼續閱讀