TIM定时器的应用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TIM定時器的應用
?
? ? ? ①輸入捕獲的應用:
? ? ? ? ? ? ?
? ? ? ? ?上一節,我已闡述TIM的輸入捕獲具體作用有兩個(如下圖):
? ? ? ?
? ? ??
??
? ? ? ??
? ? 對輸入信號的測量:
?
? ? ? ? ? ? ? ? ? ? ??
? ?
? ? ? ? ?測量信號周期或頻率:
?
? ? ? ? ? ? ?1)value1? ? ?當捕獲通道 TIx上出現上升沿時,發生第一次捕獲,計數器 CNT 的值會被鎖存到捕獲寄存器 CCR 中,而且還會進入捕獲中斷,在中斷服務程序中記錄一次捕獲(可以用一個標志變量來記錄),并把捕獲寄存器中的值讀取到 value1 中。
? ? ?2)value3 ? 當出現第二次上升沿時,發生第二次捕獲,計數器CNT的值會再次被鎖存到捕獲寄存器CCR中,并再次進入捕獲中斷,在捕獲中斷中,把捕獲寄存器的值讀取到 value3 中,并清除捕獲記錄標志。
? ? ?3) value3 - value1 ? ?----------計算信號的周期(頻率)。
?
??
?
? ?測量脈寬:?
?
? ? ? ?1)當捕獲通道 TIx 上出現上升沿時,發生第一次捕獲,計數器 CNT 的值會被鎖存到捕獲寄存器 CCR 中,而且還會進入捕獲中斷,在中斷服務程序中記錄一次捕獲(可以用一個標志變量來記錄),并把捕獲寄存器中的值讀取到 value1 中。
? ? ? ?2)然后把捕獲邊沿改變為下降沿捕獲,目的是捕獲后面的下降沿。當下降沿到來的時候,發生第二次捕獲,計數器 CNT 的值會再次被鎖存到捕獲寄存器 CCR 中,并再次進入捕獲中斷,在捕獲中斷中,把捕獲寄存器的值讀取到 value3 中,并清除捕獲記錄標志。
? ? ? ?3)然后把捕獲邊沿設置為上升沿捕獲。在測量脈寬過程中需要來回的切換捕獲邊沿的極性(如果測量的脈寬時間比較長,定時器就會發生溢出,溢出的時候會產生更新中斷,我們可以在中斷里面對溢出進行記錄處理)
?
? ?
?
?
?
? ? ?PWM波輸入模式:
? ?
? ??測量脈寬和頻率還有一個更簡便的方法就是使用 PWM 輸入模式,該模式是輸入捕獲的特例,只能使用通道 1 和通道 2,通道 3 和通道 4 使用不了。與上面那種只使用一個捕獲寄存器測量脈寬和頻率的方法相比,PWM 輸入模式需要占用兩個捕獲寄存器。
? ? ? ? ?
? ? ? ? ? ? ? ? ? ??
?
? ?
? ? ?當使用 PWM 輸入模式的時候,因為一個輸入通道(TIx)會占用兩個捕獲通道(ICx),所以一個定時器在使用 PWM 輸入的時候最多只能使用兩個輸入通道(TIx)。?
? ?PWM 信號由輸入通道 TI1 進入,因為是 PWM 輸入模式的緣故,信號會被分為兩路,一路是 TI1FP1,另外一路是 TI2FP2。其中一路是周期,另一路是占空比,具體哪一路信號對應周期還是占空比,得從程序上設置哪一路信號作為觸發輸入,作為觸發輸入的哪一路信號對應的就是周期,另一路就是對應占空比。作為觸發輸入的那一路信號還需要設置極性,是上升沿還是下降沿捕獲,一旦設置好觸發輸入的極性,另外一路硬件就會自動配置為相反的極性捕獲,無需軟件配置。(選定輸入通道,確定觸發信號,然后設置觸發信號的極性即可,因為是 PWM 輸入的緣故,另一路信號則由硬件配置,無需軟件配置)
? 當使用PWM輸入模式的時候必須將從模式控制器配置為復位模式(配置寄存器SMCR的位 SMS[2:0]來實現),即當我們啟動觸發信號開始進行捕獲的時候,同時把計數器 CNT復位清零。?
?
? 下面我們以一個更加具體的時序圖來分析下 PWM 輸入模式。
??
??
??
? PWM 信號由輸入通道 TI1 進入,配置 TI1FP1 為觸發信號,上升沿捕獲。當上升沿的時候 IC1 和 IC2 同時捕獲,計數器 CNT 清零,到了下降沿的時候,IC2 捕獲,此時計數器CNT的值被鎖存到捕獲寄存器CCR2中,到了下一個上升沿的時候,IC1捕獲,計數器CNT的值被鎖存到捕獲寄存器 CCR1 中。其中 CCR2+1 測量的是脈寬,CCR1+1 測量的是周期。?
?
? 從軟件上來說,用 PWM 輸入模式測量脈寬和周期更容易,付出的代價是需要占用兩個捕獲寄存器。
?
轉載于:https://www.cnblogs.com/darren-pty/p/darren_32_TIM.html
總結
- 上一篇: MySQL数据库篇之初识数据库
- 下一篇: get和post有什么区别