STM32的定時器輸入通道都有一個濾波單元,分別位于每個輸入通路上(下圖中的黃色框)和外部觸發輸入通路上(下圖中的蘭色框),它們的作用是濾除輸入信號上的高頻干擾。 具體操作原理如下: 在TIMx_CR1中的CKD[1:0]可以由用戶設置對輸入信號的采樣頻率基準,有三種選擇: 1)采樣頻率基準fDTS=定時器輸入頻率fCK_INT 2)采樣頻率基準fDTS=定時器輸入頻率fCK_INT/2 3)采樣頻率基準fDTS=定時器輸入頻率fCK_INT/4 然后使用上述頻率作為基準對輸入信號進行采樣,當連續采樣到N次個有效電平時,認為一次有效的輸入電平。 實際的采樣頻率和采樣次數可以由用戶程序根據需要選擇;外部觸發輸入通道的濾波參數在從模式控制寄存器(TIMx_SMCR)的ETF[3:0]中設置;每個輸入通道的濾波參數在捕獲/比較模式寄存器1(TIMx_CCMR1)或捕獲/比較模式寄存器2(TIMx_CCMR2)的 IC1F[3:0]、IC2F[3:0]、IC3F[3:0]和IC4F[3:0]中設置。 例如:當fCK_INT=72MHz時,選擇fDTS=fCK_INT/2=36MHz,采樣頻率fSAMPLING=fDTS/2=18MHz且N=6,則頻率高于3MHz的信號將被這個濾波器濾除,有效地屏蔽了高于3MHz的干擾。 比如,結合輸入捕獲的中斷,可以輕松地實現按鍵的去抖動功能,而不需要軟件的干預;這可是由硬件實現的去抖動功能,大大節省了軟件的開銷和程序代碼的長度。 每個定時器最多可以實現4個按鍵的輸入,這個方法也可以用于鍵盤矩陣的掃描,而且因為是通過中斷實現,軟件不需頻繁的進行掃描動作。 發表于2009/9/20 |