看STM32定時器一個多星期,真是亂啊。各種模式的說。這也主要是我們對定時器的各種模式的應(yīng)用不是很了解。而我們對定時器的基礎(chǔ)部分則是上手很快。就是定時器定時完成后的更新事件中斷。捕獲,比較這些還說得過去,再后來的從模式、觸發(fā)、霍爾傳感器和編碼器等直接就亂了,更不用說高級定時器中的剎車、死區(qū)、互補等。
而我看定時器則是看了通用定時器,主要是剎車,編碼器等這些對于我來說應(yīng)用得少,即使哪天用到了也忘了??戳送ㄓ枚〞r器不少于4次??偹隳軌蚶砝砬宄?。以下慢慢說。
通用定時器有以下一些模式:
計數(shù)模式(向上計數(shù),向下計數(shù),中央對齊計數(shù))
捕獲比較模式: (捕獲)1、輸入捕獲模式
2、PWM輸入模式
(比較)1、強制輸出模式
2、比較輸出模式
3、PWM模式
4、單脈沖模式
編碼器模式
從模式 1、復(fù)位模式
2、門控模式
3、觸發(fā)模式
4、外部時鐘模式+觸發(fā)模式
主模式
時鐘: 1、內(nèi)部時鐘
2、外部時鐘1
2、外部時鐘2
這里只為了更好的理解,而更多的細(xì)節(jié)還得參照數(shù)據(jù)手冊,并且定時器確實看一次有一次新的認(rèn)識,所以不確定完全正確。
首先在定時器給定的內(nèi)部圖中可以看出所有模式的對應(yīng)關(guān)系,當(dāng)對定時器有一定了解時可以更加清楚的認(rèn)識該圖。
為了不雜亂無章,我們只分析一下圖。
圖中有陰影的部分都是有一影子寄存器的,并且是可使能的。而在PWM模式中影子寄存器是必須打開的。
再看圖的左邊分別為TIMX_ETR,TIMX_CH1,TIMX_CH2...這些引腳分別為輸入引腳,而TIMX_ETR為觸發(fā)引腳,暫時不管它們是做什么的,再看右邊的TIMX_CH1這些分別為比較輸出引腳。
一般在數(shù)據(jù)手冊的時鐘向后就開始亂了,定時器有三種時鐘(書中寫了四種,其實第四種就是第二種內(nèi)的一種),可看圖上方一矩形,內(nèi)有“觸發(fā)控制器,從模式控制器,編碼器”。
1、可以看到內(nèi)部時鐘(CK_INT)連接到此矩形上。
2、外部觸發(fā)引腳TIMX_ETR引腳經(jīng)過濾波等處理形成ETRF信號也連接到此(由它可提供外部時鐘模式2所說的時鐘,同時它可以觸發(fā)的作用)
3、再看ITR0,ITR1等信號也連接到此矩形中,這些信號為其它定時器輸出的信號。(這也是手冊中所講使用一個定時器作為另一個定時器的預(yù)分頻,那么驅(qū)動此定時器的定時器為主定時器,必須配置TIMX_CR2中的MMS位來確定它輸出什么樣的信號給從定時器。通過設(shè)置TIMX_SMCR中的TS位來選擇哪個定時器來驅(qū)動當(dāng)前定時器)
4、而TIMX_CH1~CH4也可以配置為觸發(fā)輸入引腳,也可以為定時器來提供時鐘。
在TIMX_SMCR(從模式控制寄存器)中SMS中設(shè)置為000(關(guān)閉從模式)則使能定時器時時鐘則由內(nèi)部時鐘提供。當(dāng)配置了SMS位為非零值,并且在TS位中選擇了輸入引腳,并且使能了相關(guān)的時鐘則會使用該引腳上的某個邊沿或者某個電平來驅(qū)動計數(shù)器計數(shù),而外部時鐘2則只能由ETR來提供時鐘,外部時鐘1也可以由ETR來提供,或者其它引腳提供。
而這除內(nèi)部時鐘外,其它連接到從模式控制器的引腳(編碼器不清楚,沒有看,以下所寫和它無關(guān))不但可以提供時鐘外,也可以產(chǎn)生相應(yīng)的事件,如關(guān)閉時鐘模式2和不選中時鐘模式1的情況下,外部觸發(fā)引腳(其它輸入引腳也可以)還可以復(fù)位計數(shù)器、啟動計數(shù)器等。
而CH1~CH4則可以控制從模式,同時它可以作為一個捕獲信號的輸入,此時可以關(guān)閉從模式,或者開啟從模式中的時鐘模式1輸入的信號會使當(dāng)前的計數(shù)器的值保存到CCR寄存器中。
輸出CH1~CH4則通過設(shè)置CCR寄存器的值則是輸出所設(shè)定的電平。當(dāng)定時器設(shè)置為主模式時輸出的0CXREF將在內(nèi)部輸出到從模式定時器中,從模式定時器將產(chǎn)生SMCR中SMS所設(shè)置的事件。
講了這么多,自己都亂了。總而方之就是輸入的引腳一般都工作為從模式,即定時器的計數(shù)器由這些引腳來絕定計數(shù)或者停止的。(我個人理解)
這些引腳可以為使內(nèi)部定時器根據(jù)外部引腳的某個極性計數(shù),即外部時鐘模式。
這些引腳輸入的信號可以使內(nèi)部計數(shù)器復(fù)位、開啟、關(guān)閉等。
這些引腳可以是外部提供,也可以是內(nèi)部其它定時器的某個事件產(chǎn)生的輸出或者比較輸出來驅(qū)動當(dāng)前定時器。