本文作者:Miler Shao 凡接觸過STM32芯片的人可能發(fā)現(xiàn),STM32芯片內(nèi)的定時(shí)器外設(shè)往往很多,其中不少定時(shí)器可以內(nèi)部連接建立起主從關(guān)系,從而實(shí)現(xiàn)定時(shí)器間的時(shí)鐘同步或前后級(jí)聯(lián)操作。被配置為主模式定時(shí)器可以復(fù)位、啟停從模式定時(shí)器或?yàn)閺亩〞r(shí)器提供時(shí)鐘源。 在STM32 各系列的參考手冊里對各個(gè)定時(shí)器都有很詳細(xì)而龐大的描述,不過經(jīng)常會(huì)有人在這里遇到點(diǎn)障礙。我們不妨以一個(gè)問題入手。
STMCU社區(qū)網(wǎng)站有人咨詢?nèi)缦略掝}: 我在使用STM32F407芯片,想用TIM10作為主定時(shí)器輸出給TIM9,TIM10作為TIM9的計(jì)數(shù)時(shí)鐘。但是我在TIM10寄存器中沒有找到相應(yīng)的寄存器設(shè)置。比如當(dāng)把TIM2作為主定時(shí)器的時(shí)候,可以在定時(shí)器的TIM2_CR2寄存器下的MMS[2:0]位設(shè)置通道幾作為內(nèi)部互聯(lián)輸出。TIM11也找不到這樣的寄存器,請問定時(shí)器11應(yīng)該怎么配置成內(nèi)部互連輸出。謝謝。 咨詢者大致意思是說想把TIM10做MASTER,并為TIM9提供時(shí)鐘。但找不到關(guān)于TIM10的主從模式的配置寄存器。TIM11也找不到相應(yīng)寄存器。 如果一個(gè)TIMER能配置為MASTER模式,就得有觸發(fā)輸出端,即TRGO;如果某TIMER能配置為SLAVE模式, 自然得有內(nèi)部觸發(fā)輸入端,即ITRn[n=0~3]。這樣通過把前一級(jí)TIMER的TRGO內(nèi)部連接到下一級(jí)TIMER的ITRn,形成主從級(jí)聯(lián)關(guān)系。 下面截圖是STM32高級(jí)定時(shí)器功能框圖的一部分,不難看出,它既可作MASTER也可作SLAVE。 現(xiàn)在我們?nèi)TM32F4系列的參考手冊RM0090找找咨詢者提到過的TIM2 、TIM10、 TIM11 的功能框圖。

顯然,TIM2支持主、從模式配置。 繼續(xù)看看TIM10 TIM11的框圖。  從TIM10/11/13/14的功能框圖能一眼看出它們根本不支持定時(shí)器間的內(nèi)部主從級(jí)聯(lián),既不能做MASTER也不能做SLAVE。自然也就沒有相關(guān)的配置寄存器。
到這里,咨詢者的答案也就基本出來了。我們順便再多看一幅框圖:

上圖是STM32F4系列芯片里TIM9和TIM12的功能框圖部分,可以看出這兩個(gè)TIMER跟前面提到的TIM10/TIM11 又不一樣,可以配置為SLAVE模式,但不能配置為MASTER模式,因?yàn)樗鼪]有TRGO輸出端。 總體上講,STM32芯片里定時(shí)器較多,往往根據(jù)功能特征分為幾類。各類TIMER功能上會(huì)有差異,這點(diǎn)要注意。 繼續(xù)回到上面的話題,即使某TIMER支持主從模式的功能,但在跟它建立主從關(guān)系的定時(shí)器選擇上并非隨心所欲的,不是說你想跟誰聯(lián)就跟誰聯(lián),想接哪個(gè)通道就可以接哪個(gè)通道,而是要遵照相關(guān)的約定。我們以上面的TIM2 為例來看下。  從上圖可以看出,如果TIM2工作在slave模式,就只有TIM1/8/3/4之一可以與之構(gòu)成主從關(guān)系,而且ITRn 也有規(guī)定,比方TIM1的TRGO 就只能從TIM2的ITR0進(jìn)。如果TIM2做MASTER時(shí),只有TIM3/4/5可以配合做它的SLAVE。 小結(jié)下: 1、不是所有定時(shí)器都支持定時(shí)器內(nèi)部主從互聯(lián)。其中部分完全不支持內(nèi)部主、從互聯(lián);有的只支持從模式下的互聯(lián); 2、即使支持TIMER的互聯(lián)模式,但互聯(lián)的定時(shí)器及相關(guān)通道也是有相關(guān)約定的。 |