@TOC
分為四部分,八小節
一部分:主要講定時器基本定時的功能,也就是定一個事件,讓定時器每隔這個時間產生一個中斷,來實現每隔一個固定時間來執行一段程序的目的,比如做一個時鐘、秒表,或者使用一些程序算法的時候,都需要用到定時中斷的功能
二部分:定時器輸出比較的功能,輸出比較模塊最常見的用途是產生PWM波形,用于驅動電機等設備(學習一下驅動舵機和直流電機)
三部分:定時器輸入捕獲的功能,學習使用輸入捕獲這個模塊實現測量方波頻率的例子
四部分:定時器的編碼器接口,使用編碼器接口,更加方便地讀取正交編碼器的輸出波形,在編碼電機測速中,應用廣泛
STM32中功能最強大、結構最復雜的一個外設——定時器
定時器本質上是一個計數器,當計數器的輸入是一個準確可靠的基準時鐘的時候,那就基準時鐘計時的過程中,實際上就是計時的過程,比如STM32中,定時器的基準時鐘一般都是主頻72MHz,比如對72MHz計72個數,那就是1MHz也就是1us的時間,如果計72000個數,就是1KHz,1ms時間,
16位計數器就是用來執行技術定時器的一個寄存器,每來一個時鐘,計數器加1,
預分頻器可以對計數器的時鐘進行分頻,讓這個計數更加靈活
自動重裝寄存器就是技術的目標值,就是想要計時多少個時鐘申請中斷
這些寄存器構成了定時器最核心的部分,我們把這一塊電路稱為時基單元。
時基單元里計數器、預分頻器、自動重裝寄存器都是16位的,216=65536,也就是如果預分頻器設置最大,自動重裝也設置最大,那定時器的最大定時時間就是59.65s, 72M/65536/65536得到的是中斷頻率,然后取倒數,就是59.65s多。如果還覺得不長,STM32的定時器還支持級聯的模式,也就是一個定時器的輸出,當做另一個定時器的輸入,,這樣就是59.65s再乘兩次65536=8千多年,如果還嫌短,再級年一個定時器,,定時時間再延長65536*65536倍,時間大概是34萬億年。可見指數爆炸的威力。
由于定時器的這個基本結構是非常通用的,很多模塊電路都能用到,所以STM32定時器上擴展了非常多的功能,第一部分講定時器中斷和內外時鐘源選擇的功能,第二部分講輸出比較,第三部分講輸入捕獲和主從觸發模式,第四部分講編碼器接口。
學習學的是通用定時器
因為同一塊芯片有很多定時器,所以TIM后面會跟一個數字,編號和定時器類型的對應關系就是TIM1和TIM8是高級定時器,2345是通用定時器,67是基本定時器。連接的總線不一樣,需要注意一下。