1. 程式人生 > >STM32學習--定時器(高階定時器)

STM32學習--定時器(高階定時器)

高階定時器
1、功能增加

這裡寫圖片描述

由上圖可瞭解到高階定時器在通用定時器上增加了三個功能部分:
① 時基部分:增加重複次數計數器和RCR暫存器。允許在指定數量的計數週期後產生更新事件,更新相應暫存器,其實際用處暫不瞭解,減少中斷或DMA處理的資源佔用?
②輸入部分:增加剎車輸入,可產生剎車事件。其源可為外部BKIN口和CCS事件,可控制輸的。主要用在安全方面,如遇到緊急事件或系統異常時關閉輸出口。
③輸出部分:這部分增加功能較多,特別在1~3通道增加死區控制、互補輸出、剎車響應及幾種輸出模式控制。

2、重複次計數器

增加重複次數計數器和RCR暫存器,當RCR暫存器為0時實際和通用定時器一樣用。當其不為0時,重複次計數器會隨下列事件,當遞減至0時才會產生更新事件,在其不為0時計數器溢位或下溢均不產生更新事件。
重複計數器在下述任一條件成立時遞減:
● 向上計數模式下每次計數器溢位時,
● 向下計數模式下每次計數器下溢時,
● 中央對齊模式下每次上溢和每次下溢時。
TIMx_RCR:重複計數暫存器
只有低8位有效,每次向下計數器REP_CNT達到0,會產生一個更新事件並且計數器REP_CNT重新從REP值開始計數。TIMx_RCR暫存器寫入的新值只在下次週期更新事件發生時才起作用。
在PWM模式中, (REP+1)對應著:
- 在邊沿對齊模式下, PWM週期的數目;
- 在中心對稱模式下, PWM半週期的數目。

3、互補輸出、死區插入、剎車功能
個人理解這個也主要用於電機控制,死區是避免直通燒壞外圍器件。互補輸出,有利於用於控制不同的驅動電路。
也可只使用CCxN輸出,而不使能CCx輸出,對於管腳選擇也更有選擇餘地。
死區DTG用來設定死區時間,可根據外圍器件的特性如電平轉換延時、電源開關延時等進行設定。
剎車功能其源可為外部BKIN口和CCS事件,由BKE選擇使能,極性由BKP設定。

相關暫存器:
CCxN輸出電平依賴於MOE、 OSSI、 OSSR、OISx、 OISxN和CCxE位的值。
這裡寫圖片描述
與通用定時器不同,TIMx_CCER暫存器中1~3通道每個通道多2個控制位CC1NE和CC1NP,分別用來使能反向輸出和設定反向極性。
TIMx_CR2 中增加OISx和OISxN確定輸出空閒狀態狀態。
這裡寫圖片描述


TIMx_BDTR 剎車和死區暫存器
MOE: 主輸出使能;
AOE: 自動輸出使能
BKP: 剎車輸入極性
BKE: 剎車功能使能
OSSR: 執行模式下“關閉狀態”選擇
OSSI: 空閒模式下“關閉狀態”選擇
LOOK[1:0]: 鎖定設定 (Lock configuration)
該位為防止軟體錯誤而提供防寫。
00:鎖定關閉,暫存器無防寫;
01:鎖定級別1,不能寫入TIMx_BDTR暫存器的DTG、 BKE、 BKP、 AOE位和TIMx_CR2寄存
器的OISx/OISxN位;
10:鎖定級別2,不能寫入鎖定級別1中的各位,也不能寫入CC極性位(一旦相關通道通過
CCxS位設為輸出, CC極性位是TIMx_CCER暫存器的CCxP/CCNxP位)以及OSSR/OSSI位;
11:鎖定級別3,不能寫入鎖定級別2中的各位,也不能寫入CC控制位(一旦相關通道通過
CCxS位設為輸出, CC控制位是TIMx_CCMRx暫存器的OCxM/OCxPE位);
注:在系統復位後,只能寫一次LOCK位,一旦寫入TIMx_BDTR暫存器,則其內容凍結直至復
UTG[7:0]: 死區發生器時間設定