異或那塊先不管他,好像跟編碼器有關,輸入有個特色就是可以把ti的輸入搞到cc1上去,也可以把t2的輸入搞到cc1上去,其實也可以把t1搞到cc1上去同時把t1搞到cc2上去,這樣就有了後來的pwm輸入。
輸出上的特色是不直接輸出,而是有個oc1ref,這樣可以定義高有效還是低有效,輸出自己需要的有效電平。
復位門控 觸發
所謂從模式簡單理解就是受控於別人了,包括何時啟動、何時停止、何時復位。相關作用請看手冊。提示一點就是進入這三種模式後時鐘是誰的問題?肯定不是外部時鐘1了,可以是內部時鐘和外部時鐘2.
接著看實驗,pwm方式的原理是這樣的,如前文提到過輸入時可以把t1對映到cc1上去同時對映到cc2上,將cc1和cc2的捕獲邊沿搞成相反的,比如cc1捕獲t1上公升沿,cc2捕獲t1下降沿,還要再設定t1為復位從模式,上公升沿有效,這樣t1上公升沿后計數器開始計數。下降沿cc2捕獲發生,此為pwm占空比,在來乙個上公升沿,cc1捕獲發生此為pwm週期。注意
cc1捕獲的第一次無效。
這是從模式跟輸入捕獲的一種組合使用,從模式還可以跟輸出比較組合使用。比如手冊上的單脈衝實驗。
先得說說主模式的問題。在cr2暫存器中的mms位決定了定時器的主模式方式,即決定trgo.幾種方式可以參看手冊。要說明一點就是乙個定期器既可以是主模式同時它也是從模式,這就好像你是乙個中層幹部一樣,既可以領導別人同時又被別人領導,這個不衝突的。
在輸入捕獲模式下,當檢測到icx訊號上相應的邊沿後,計數器的當前值被鎖存到捕獲/比較暫存器(timx_ccrx)中。
當發生捕獲事件時,相應的ccxif標誌(timx_sr暫存器)被置1,
如果開放了中斷或者dma操作,則將產生中斷或者dma請求。
如果發生捕獲事件時ccxif標誌已經為高,那麼重複捕獲標誌ccxof(timx_sr暫存器)被置1。
寫ccxif=0可清除ccxif,或讀取儲存在timx_ccrx暫存器中的捕獲資料也可清除ccxif。寫ccxof=0可清除ccxof。
以下例子說明如何在ti1輸入的上公升沿時捕獲計數器的值到timx_ccr1暫存器中,
步驟如下:
●選擇有效輸入端:timx_ccr1必須連線到ti1輸入,所以寫入timx_ccr1暫存器中的
cc1s=01,只要cc1s不為』00』,通道被配置為輸入,並且timx_ccr1暫存器變為唯讀。
● 根據輸入訊號的特點,配置輸入濾波器為所需的頻寬(即輸入為tix時,輸入濾波器控制位是timx_ccmrx暫存器中的icxf位)。
假設輸入訊號在最多5個內部時鐘週期的時間內抖動,
我們須配置濾波器的頻寬長於5個時鐘週期;因此我們可以(以f dts 頻率)連續取樣8次,以確認在ti1上一次真實的邊沿變換,即在timx_ccmr1暫存器中寫入ic1f=0011。
●選擇ti1通道的有效轉換邊沿,在timx_ccer暫存器中寫入cc1p=0(上公升沿)。
●配置輸入預分頻器。在本例中,我們希望捕獲發生在每乙個有效的電平轉換時刻,因此預分頻器被禁止(寫timx_ccmr1暫存器的ic1ps=00)。
●設定timx_ccer暫存器的cc1e=1,允許捕獲計數器的值到捕獲暫存器中。
●如果需要,通過設定timx_dier暫存器中的cc1ie位允許相關中斷請求,通過設定
timx_dier暫存器中的cc1de位允許dma請求。
當發生乙個輸入捕獲時:
●產生有效的電平轉換時,計數器的值被傳送到timx_ccr1暫存器。
● cc1if標誌被設定(中斷標誌)。當發生至少2個連續的捕獲時,而cc1if未曾被清除,
cc1of也被置1。
●如設定了cc1ie位,則會產生乙個中斷。
●如設定了cc1de位,則還會產生乙個dma請求。
為了處理捕獲溢位,建議在讀出捕獲溢位標誌之前讀取資料,這是為了避免丟失在讀出捕獲溢位標誌之後和讀取資料之前可能產生的捕獲溢位資訊。
注:設定 timx_egr 暫存器中相應的 ccxg 位,可以通過軟體產生輸入捕獲中斷和 / 或 dma 請求。
記錄 輸入捕獲
捕獲輸入訊號脈衝的寬度。捕獲的概念是,捕獲邊沿訊號,同時將定時器的計數值儲存下牢。通過檢測輸入通道 timx chx 上的邊沿訊號,在邊沿訊號發生跳變 上公升沿 下降沿 的時候,將當前定時器的值 timx cnt 存入對應的捕獲 比較暫存器 timx ccrx 中,完成一次捕獲。定時器的輸入通道,就...
6 輸入捕獲實驗
注意點 1 在學習的過程中我們使用到與串列埠實驗相類似的乙個暫存器 本質是乙個變數 用來處理不同的情況,在今後的學習也可以使用這種方法,這種暫存器的組成如下圖所示 2 確定捕獲到乙個完整高電平的軟體實現 包括如果處理接收到的高電平持續時間過長的情況 void tim2 irqhandler void...
stm32 輸入捕獲
根據定時器的計數頻率,我們就可以算出t1 t2的時間,從而得到高電平脈寬 計算公式 n arr ccrx2首先設定定時器通道為上公升沿捕獲,這樣在t1時刻,就會捕獲到當前的cnt值,然後立即清零cnt,並設定定時器通道為下降沿捕獲,這樣到t2時刻,又會發生捕獲事件,得到此時的cnt值,記為ccrx2...