如圖所示,輸出理解時注意兩種訊號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...