有些應用場合,我們需要使用多個定時器主從級聯(lián),然后讓各個定時器同時啟動并做同頻同相的PWM波形輸出。要完成這個功能,有時發(fā)現(xiàn)實現(xiàn)起來似乎并沒有那么順暢,這里基于STM32F1系列芯片做個配置示例。之所以選擇STM32F1芯片主要是考慮到有部分人使用STM32F1芯片并基于標準庫做開發(fā),那么,我這里就Cube庫和標準庫給出兩套相關主從配置的示例代碼,供有需要的人參考。
在調試驗證過程中我選擇STM32F103 Nucleo板,主芯片為STM32F103RB.將片內定時器TIM1/TIM2/TIM3/TIM4四個定時器主從首尾相連,同時啟動并要求四個定時器輸出同頻同相信號。
先查看STM32F1參考手冊相關章節(jié)【這個環(huán)節(jié)是必不可少的】,各類定時器從模式控制寄存器描述部分往往有定時器內部觸發(fā)連接表格。我們要看的是下面這個表格:
結合上面定時器內部觸發(fā)連接表格,讓四個定時器建立如下主從級聯(lián)關系。
基本原理是這樣的【實際上是結合上圖看圖說話】:
TIM1工作在主模式,TIM4工作在從模式,TIM2和TIM3處于雙角色,既做主又做從。其中TIM2/TIM3/TIM4的從模式都配置在觸發(fā)從模式,即Trigger Slave Mode.
TIM1的定時器使能操作作為觸發(fā)輸出[TRGO]觸發(fā)TIM2并使能TIM2的計數(shù)器,同時TIM2的定時器使能操作又作為觸發(fā)輸出信號連接到TIM3,并觸發(fā)TIM3的定時器啟動。同樣,TIM3的定時器使能信號又作為TIM4的觸發(fā)信號,連接到TIM4的內部觸發(fā)輸入端,觸發(fā)啟動TIM4. 在所有定時器使用相同時鐘源、相同時基參數(shù)配置的前提下,同時輸出多路完美同頻同相的PWM波形,像下面的樣子。【我為了截圖方便,圖形來自于IDE的邏輯分析儀模擬效果】
這里的配置要點,就是軟件只需使能TIM1的計數(shù)器,其它定時器的計數(shù)器靠觸發(fā)信號啟動并保持同步計數(shù)。這里只用到定時器的使能信號作為觸發(fā)輸出[TRGO]并連到下一級從模式定時器。當然可以作為觸發(fā)輸出的信號很多,讀者可以進一步查看相關資料。
一、基于stm32F1標準庫的跟定時器主從配置相關代碼如下【關于時基配置和PWM輸出配置這里就沒放進來了。重點關注這幾個定時器的主從配置】:
我們在添加用戶應用代碼時,要注意的一點就是TIM2/TIM3/TIM4的計數(shù)器不必、也不可手動啟動,我們只需手動使能TIM1計數(shù)器的工作就好,并開啟各ARR/CCR寄存器的預取功能。
二、上面是基于STM32F1標準庫有關定時器主從配置的參考配置代碼,如果是基于CubeMx配置工具來配置的話,參照下面配置操作后即可生成相關配置代碼。【主從配置關注紅色方框內的配置】
TIM1的相關主從配置:
TIM2的相關主從配置:
TIM3的相關主從配置:
TIM4的相關主從配置:
同樣,在用戶代碼里只需開啟TIM2/TIM3/TIM4的相關PWM輸出功能,不要軟件使能它們三個定時器的計數(shù)器。配置好TIM1的PWM輸出功能后,只需軟件使能TIM1的計數(shù)器,令其產生觸發(fā)輸出,讓4個定時器同步計數(shù)并做PWM輸出。
關于上面4個定時器實現(xiàn)同頻同相輸出的主從配置主要就這些內容,用戶程序里只需使能第一個主定時器的計數(shù)器工作,其它定時器的工作全靠觸發(fā)從模式觸發(fā)啟動。另外,在啟動第一個主定時器的時候,其它從定時器一定都已經配置好了,也就是說要注意用戶代碼中的那幾行代碼的先后順序。總之,保證一點,在啟動定時器時所有定時器的初始化工作都要已經完成,不能啟動后才去做初始化,不然會導致計數(shù)和輸出不同步。
其實,即使使用CubeMx進行配置,也會面臨各種從模式的選擇問題,關于各種定時器從模式的特征和用法,以及定時器觸發(fā)信號內容請自行查看手冊或相關資料進一步閱讀了解,帶著問題去查看資料會更有效率些。
-
PWM
+關注
關注
116文章
5384瀏覽量
218137 -
STM32
+關注
關注
2290文章
11017瀏覽量
362458 -
定時器
+關注
關注
23文章
3288瀏覽量
117255
原文標題:多個定時器同步輸出的主從配置示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
CubeMX的定時器級聯(lián)配置
使用51單片機進行定時器初值的計算詳細資料說明

STM32通用定時器的單脈沖示例詳解

什么是SysTick定時器?實現(xiàn)STM32時鐘系統(tǒng)的詳細資料說明

STM32F103C8T6 16位定時器級聯(lián)為32位定時器

利用通用定時器輸出PWM(附示例驅動直流電機)

評論