STM32學習 定時器(通用定時器)

2021-07-24 12:44:32 字數 2003 閱讀 8642

如圖所示,輸出理解時注意兩種訊號ocxref和ocx,ocx是直接連到埠的訊號,ocxref是輸出控制的輸出訊號。一般在參考手冊中大多數講ocxref。ocx與ocxref可由ccxp控制是否反向,由ccxe控制訊號輸出。

比較輸出功能:①輸出乙個波形②指示一段給定時間已到。

它的原理是通過計數器的值cnt與各通道ccrx值進行對比,當cnt與ccrx值相等時產生乙個比較事件,從而實現中斷處理、dma或ocxref輸出等等。

在其使用時主要考慮三個部分:①埠對映②時基選擇③ 輸出配置。

輸出比較模式:由oc1m[2:0]控制,其可以分為4種型別:

①凍結:就是cnt與ccrx比較結果對於ocxref無影響;

②cnt與ccrx比較結果相同時,強制ocxref為高或低或者翻轉;

③強制ocxref為高或低;

④pwm兩種模式。

①配置輸出通道,配置io口(使能時鐘、輸入、復用功能、復用時鐘、重對映到tim功能);

②設定定時器的時基,開啟定時器時鐘,配置計數模式、分頻器係數(psc)及過載值(arr)、ccr值;

③使能預裝載寄存;

④根據需求開啟中斷\dma,編寫中斷函式;

⑤設定ocxref與ocx的關係,開啟輸出;

⑥啟動計數器,根據需要開啟中斷。

在輸出比較模式下,更新事件uev對ocxref和ocx輸出沒有影響。

pwm輸出是一種特殊的比較輸出,使用比較輸出也可以實現pwm輸出但需要使用中斷方式占用系統資源,而使用pwm模式可以不需要cpu參與,提高系統效率。

在pwm模式下, timx_cnt和timx_ccrx始終在進行比較, (依據計數器的計數方向)以確定是否符合timx_ccrx≤timx_cnt 或者timx_cnt≤timx_ccrx 。然而為了與ocref_clr的功能(在下乙個pwm週期之前, etr訊號上的乙個外部事件能夠清除ocxref) 一致, ocxref訊號只能在下述條件下產生:① 當比較的結果改變,或②當輸出比較模式(timx_ccmrx暫存器中的ocxm位)從「凍結」 (無比較, ocxm=』000』)切換到某個pwm模式(ocxm=』110』或』111』)。

cms位的狀態,定時器能夠產生邊沿對齊的pwm訊號或**對齊的pwm訊號。

邊沿對齊:

當向上計數時:pwm模式1時

當timx_cnt小於timx_ccrx時pwm訊號參考ocxref為高,否則為低。如果ccrx中的比較值大於arr,則ocxref保持為』1』。如果比較值為0,則ocxref保持為』0』。

向下計數時:pwm模式1時

當 timx_cnt大於timx_ccrx 時 參 考 信 號 ocxref 為 低 , 否 則 為 高 。 如 果ccrx中的比較值大於arr中的自動重裝載值,則ocxref保持為』1』。該模式下不能產生0%的pwm波形。

**對齊:

根據不同的cms位設定,比較標誌可以在計數器向上計數時被置』1』、在計數器向下計數時被置』1』、或在計數器向上和向下計數時被置』1』。 timx_cr1暫存器中的計數方向位(dir)由硬體更新,不用軟體修改它。

pwm模式1時,在**對齊模式1時

ccrx大於arr時:向上,cnt 小於ccrx-1進ocxref為高,cnt 高於ccrx-1時ocxref為低,cnt計數到arr後向下計數此過程ocxref保持為低,計到ccrx-1時ocxref轉為高。

在使用pwm模式時,必須使能ccrx和arr預裝暫存器。

①配置輸出通道,配置io口(使能時鐘、輸入、復用功能、復用時鐘、重對映到tim功能);

②設定定時器的時基,開啟定時器時鐘,配置計數模式、分頻器係數(psc)及過載值(arr)、ccr值;

④設定輸出模式(pwm模式1、2兩種模式只是輸出電平相反)、通道;

⑤使能timx在ccr2上的預裝載暫存器和arr預裝載暫存器;

⑥使能timx外設;

⑦根據需求開啟中斷\dma,編寫中斷函式。

STM32定時器(TIM)之通用定時器

stm32的通用定時器有四個,分別是tim2,tim3,tim4,tim5,有以下功能 通用定時器的框圖如下 從圖中可以看出,通用定時器timx的觸發源 計數器時鐘的時鐘源 有四個 1 內部時鐘 clk int 2 外部時鐘模式1 外部輸入引腳 tix 分別經timx chx通道傳入 3 外部時鐘模...

定時器 STM32定時器 基本定時器1

我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...