HK32F103x/C/D/E是航順芯片推出的中大容量的103系列芯片。作為32位MCU常用的外設Timer是一個通過可編程預分頻器驅動的16位自動裝載計數器構成。它適用于多種場合,包括測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和PWM)。使用定時器預分頻器和RCC 時鐘控制器預分頻器,脈沖長度和波形周期可以在幾個微秒到幾個毫秒間調整。每個定時器都是完全獨立的,沒有互相共享任何資源。
Timer主要功能
通用TIMx(TIM2、TIM3、TIM4、TIM5)定時器功能包括:
1)DAC觸發功能
2)四路輸入通道都下降沿觸發,和雙沿觸發功能
3)16位向上、向下、向上/向下自動裝載計數器
4)16位可編程(可以實時修改)預分頻器,計數器時鐘頻率的分頻系數為1~65536之間的任意數值
5)4個獨立通道:輸入捕獲、輸出比較、PWM生成(邊緣或中間對齊模式)、單脈沖模式輸出
6)使用外部信號控制定時器和定時器互連的同步電路
7)如下事件發生時產生中斷/DMA:
─ 計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發)
─ 觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數)
─ 輸入捕獲
─ 輸出比較
8)支持針對定位的增量(正交)編碼器和霍爾傳感器電路
9)觸發輸入作為外部時鐘或者按周期的電流管理
Timer 輸入捕獲模式功能描述
在輸入捕獲模式下,當檢測到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’,通道被配置為輸入,并且TM1_CCR1寄存器變為只讀。
根據輸入信號的特點,配置輸入濾波器為所需的帶寬(即輸入為TIx 時,輸入濾波器控制位是TIMx_CCMRx寄存器中的ICxF位)。假設輸入信號在最多5個內部時鐘周期的時間內抖動,我們須配置濾波器的帶寬長于5個時鐘周期。因此我們可以(以fDTS頻率)連續采樣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請求。
為了處理捕獲溢出,建議在讀出捕獲溢出標志之前讀取數據,這是為了避免丟失在讀出捕獲溢出標志之后和讀取數據之前可能產生的捕獲溢出信息。
操作Timer輸入捕獲模式上需要注意的地方
用戶在使用HK32F103xC/D/E的Timer輸入捕獲測量正弦波時,頻率計數不正確。這問題由于IO設計的問題,建議在被測信號整形成為方波輸入,這樣能彌補我們IO口設計的問題。或者芯片內部使能Timer數字濾波器,也能滿足輸入捕獲測量正弦波計數的問題。
以上有關寄存器的介紹可以參考我們HK的HK32F103xC/D/E的應用手冊。
來源: 航順芯片
審核編輯:湯梓紅
-
mcu
+關注
關注
146文章
16667瀏覽量
347791 -
寄存器
+關注
關注
31文章
5253瀏覽量
119205 -
航順芯片
+關注
關注
1文章
96瀏覽量
22740
發布評論請先 登錄
相關推薦
評論