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

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

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