MSPM0L系列的通用定時器(TIMG)是一個16位的自動重裝定時器,支持向下和上下計數兩種模式,同時帶有兩個比較捕獲單元,可以做到輸出比較,輸入捕獲,PWM輸出,單脈沖輸出等功能。
定時器還支持正交編碼器結果(QEI),多定時器間的交叉觸發和同步,以及觸發其他外設,例如ADC,DAC等,下圖是各個TIMG的配置。
TIMG可以選擇BUSCLK,MFCLK,LFCLK作為時鐘源,可以最大8分頻時鐘,再經過一個8位的預分頻器,最終稱為定時器的計數時鐘。
實操例程1
下面通過SYSCONFIG來配置一個1s的定時器,用來翻轉IO,在SYSCONFIG的定時器外設選項卡中,定時器不同的功能已經分開配置了,根據需要選擇不同的選項卡,我們是純定時,所以就在最下面的一個。
在配置界面中,時鐘選擇32MHz的總線時鐘,分頻系數為8,預分頻為64,最終定時器時鐘也就是62.5KHz,填入我們需要的定時周期1000ms,系統會自己算出寄存器的裝載值。
因為這個配置中,系統使用的是向下計數模式,所以中斷部分選擇計數到0事件
GPIO的配置方法已經在前面的教程里說過了,這里就不在重復。
在程序初始化后,使能定時器中斷,開啟定時器就可以了,在中斷函數中翻轉IO口,就可以完成1s鐘翻轉IO的程序了
配套例程名為TIM_toggleIO,需要復制到SDK目錄下運行。
實操例程2
下面配置一個PWM輸出的例子。
PWM輸出是使用的是定時器的比較功能,MSPMPL系列每個定時器可以輸出2個通道的同周期不同占空比的PWM。
有兩種PWM模式,一個是邊緣對齊PWM,其實就是定時器使用的向下計數模式,輸出通道在定時器計數開始的時候會輸出高電平,當計數值與輸出通道的比較值相同的時候,輸出通道會輸出低電平一直到定時器的計數值計數到0,就完成了一個周期的脈沖輸出。
另外一個數中心對齊PWM,也就是定時器的上下計數模式,輸出通道會在定時器開始的時候輸出低電平,在定時器向上計數和向下計數兩次到達輸出通道的比較值相等的時候各翻轉一次電平。
輸出通道初始電平在定時器未開始計數的時候可以在OCTL_xx寄存器中修改,比較輸出通道的電平也可以在此寄存器中修改成翻轉輸出。
這里設置兩個100Hz,50%占空比的PWM,其中一個通道為翻轉輸出。
在SYSCONFIG的TIMER-PWM選項卡中,設置好對應的時鐘和分頻,以及PWM周期計數值,系統會自動計算出PWM頻率。
在PWM設置里面,選擇PWM模式,這里選的是邊緣對齊,選擇雙通道輸出,每個填入通道的期望占空比,系統會自己計算出計數值以及實際占空比,通道初始狀態也可以在這里設置,這里默認不動,我們把0通設置為翻轉輸出。
最后在PinMux配置好具體的輸出管腳。
在程序里開啟定時器就可以輸出PWM了。
示波器抓一下,可以看到對應管腳已經產生了配置所需的PWM。
配套例程名為TIM_PWM,需要復制到SDK目錄下運行。
審核編輯:湯梓紅
-
PWM
+關注
關注
114文章
5186瀏覽量
213920 -
adc
+關注
關注
98文章
6498瀏覽量
544630 -
dac
+關注
關注
43文章
2294瀏覽量
191052 -
定時器
+關注
關注
23文章
3248瀏覽量
114792 -
開發板
+關注
關注
25文章
5050瀏覽量
97456
原文標題:MSPM0L1306開發板教程9 - 通用定時器
文章出處:【微信號:創易棧,微信公眾號:創易棧】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論