關(guān)于STM32定時器16位拓展32位的探討
STM32的通用定時器可以實現(xiàn)很多功能,例如:定時計數(shù)、測量外部信號脈沖寬度、產(chǎn)生PWM波形、測量輸入的PWM波形等。在所有這些操作中,定時器的位數(shù)主要影響兩個參數(shù),一個是定時或測量的精度,另一個是定時的時間長度。下面我們以一個列表看一下定時的精度和定時的長度有多少:
本文引用地址:http://www.biyoush.com/article/201610/311527.htm
關(guān)于各個預分頻器的作用請參考下圖的右半部分:
從表中可以看出,在最高精度下(14ns)定時長度只有0.91ms,在精度為250ns(即4MHz)時定時長度可達16.38ms。這是僅使用了定時器的獨立工作模式的情況。
對于需要高精度并且長延時的應用,16位的定時(上述精度和時間長度)就不夠了,這個問題可以有兩種解決辦法;第一個辦法是通過軟件的接力完成,這個方法的可行性在于定時時間較長,允許軟件有足夠的時間介入計數(shù),這種辦法非常方便,多數(shù)情況都可使用。第二種辦法是使用STM32特有的定時器級聯(lián)功能,實現(xiàn)32位的計數(shù)效果,因為級聯(lián)是由硬件觸發(fā)的,當設(shè)置好各項寄存器后,軟件不必中途干預,可以達到高精度長延時的要求。進一步地,STM32最多有四個定時器,如果串聯(lián)起來,甚至可以實現(xiàn)4*16=64位的計數(shù)效果。
簡單地說級聯(lián)功能,即是一個定時器的定時條件滿足后,可以產(chǎn)生一個觸發(fā)信號啟動另一個定時器的定時操作。
在ST的網(wǎng)站上有一個應用筆記和對應的例子程序,詳細說明和演示了如何使用STM32的級聯(lián)功能實現(xiàn)32位的輸入捕獲和32位的輸出比較功能,各位可以研究一下:
應用筆記下載地址:http://www.st.com/stonline/products/literature/an/13711.pdf
演示程序下載地址:http://www.st.com/stonline/products/support/micro/files/an2592.zip
這是該應用筆記的摘要:
【AN2592 如何使用STM32F101xx和STM32F103xx的時鐘鏈接功能實現(xiàn)定時器的32位精度】 (2007年8月)
許多應用需要32位的精度,用于測量超過幾百秒的外部信號的周期并產(chǎn)生延遲或較大間隔的周期信號。
STM32F101xx和STM32F103xx提供了鏈接兩個16位定時器借以獲得32位精度的能力,這是使用了定時器的一種特殊配置和鏈接機制。
本文給出了模擬一個32位定時器的基本原則;介紹了兩個基本的操作模式:輸入捕獲模式和輸出比較模式。每個模式都是單獨介紹并附有實例。
最后希望各位朋友能夠幫助我們更加深入地了解應用的需求,對于以工業(yè)控制和嵌入式控制儀器而言,因為我們接觸的應用有限,不是很清楚哪里需要這樣的高精度定時,如果方便我們可以做幾個實例分析,這樣更有利于我們對今后產(chǎn)品的升級和定位。
轉(zhuǎn)帖后記:真是一個認真負責的版主,提供的資料非常的齊全。STM32的TIM比較多,相信也會在PWM電機控制等場合展現(xiàn)自己的威力,在特定的設(shè)計要求下,將16位拓展為32位也是非常重要的技巧。
評論