定時器與計數器

       定時器和計數器在計算機系統中,尤其是工業控制系統中有着重要的作用。定時器和計數器的差別僅限於用途不同。定時器從本質上來講其實就是一個計數器,每收到一個脈衝,計數器就會加/減1,如果脈衝的週期固定,那麼脈衝數和時間成正比,這樣就可以根據脈衝的固定週期將計數器作爲計數器使用,比如單片機系統裏的晶振產生的脈衝,就是一個脈衝週期固定的脈衝,根據脈衝的數量就可以計算時間;如果脈衝信號是無規律的,那麼這個脈衝信號理想狀況下可以作爲一個計數器。

       1、以減法計數器爲核心部件的定時器/計數器

        和大多數人喜歡使用倒計時的方法一樣,大多數簡單定時器/計數器的核心部件爲減法計數器。減法計數器的特點是用一個計數值作爲基數,然後每接收到一個脈衝就減1,當計數器的數值爲0時就按事先設定的邏輯去觸發事件,這就是簡單定時器/計數器中斷的思路。

       下圖就是一個以計數器爲核心部件的定時器/計數器的原理圖

      預置計數基數通過總線存入預置數鎖存器並送去減法器,當gate信號爲“1”,時,減法計時器對脈衝信號clk進行減法計數。當減法計數器的值被減到0時,在out輸出計數結束或計數時間時間到信號。

      2、以加法計數器爲核心部件的定時器/計數器

      加法計數器應用更加廣泛,所以在比較複雜的計數器裏面一般都會使用加法計數器作爲核心部件,簡單的像51單片機只有一種加法計數模式,複雜點的像stm32單片機不僅有向計數,還有向下計數,還有雙邊計數等多種模式,都離不開加法器。下圖是以加法計數器爲核心部件的定時器/計數器

        爲了能用一個計數器產生多個計數結果或者定時時間到信號,這種計數器/定時器通常會配置了多個預置數寄存器,但是多個鎖存器中只有一個用來爲計數器提供預置計數,而其他的只是對計數器的計數值進行監視,所以這些寄存器通常被叫做配置鎖存器(寄存器)。在計數器收到脈衝進行計數的同時,當計數器的值與某個配置鎖存器的預置數相等時,會產生一個計數到或者定時時間到的信號。由於有多個配置鎖存器所以在計數過程中可能會產生多個時間節點,以使程序在這多個節點上實現多個功能。

       爲了使程序可以隨時捕獲計數器計數過程中的數據,還可以配備若干個捕獲寄存器,這些捕獲寄存器可以隨時捕獲計數器在某個時刻的計數值。

       最後貼上一張STM32單片機的比較/捕獲1的主電路幫助理解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章