stm32的定時器

2021-07-11 01:46:22 字數 1930 閱讀 2518

stm32一共有8個都為16位的定時器。其中tim6、tim7是基本定時器;tim2、tim3、tim4、tim5是通用定時器;tim1和tim8是高階定時器。

1.基本定時器

基本定時器tim6和tim7只具備最基本的定時功能,就是累加的時鐘脈衝數超過預定值時,能觸發中斷或觸發dma請求。由於在晶元內部與dac外設相連,可通過觸發輸出驅動dac,也可以作為其他通用定時器的時鐘基準。

這兩個基本定時器使用的時鐘源都是timxclk,時鐘源經過psc預分頻器輸入至脈衝計數器timx_cnt,基本定時器只能工作在向上計數模式,在過載暫存器timx_arr中儲存的是定時器的溢位值。

工作時,脈衝計數器timx_cnt由時鐘觸發進行計數,當timx_cnt的計數值x等於過載暫存器timx_arr中儲存的數值時,產生溢位事件,可觸發中斷或dma請求。然後timx_cnt的值重新被置為0,重新向上計數。

2.通用計數器

相比之下,通用計數器tim2-tim5就比基本定時器複雜得多了。除了基本的定時,它主要用在測量輸入脈衝的頻率、脈衝寬與輸出pwm脈衝的場合,還具有編碼器的介面。

1)捕獲/比較暫存器

通用暫存器的基本計時功能與基本計時器的工作方式是一樣的,同樣把時鐘源經過預分頻器輸出到脈衝計數器timx_cnt累加,溢位時就產生中斷或dma請求。

而通用定時器比基本定時器多出的強大功能,就是因為通用定時器多出了一種暫存器—捕獲/比較暫存器timx_ccr,它在輸入時被用於捕獲(儲存)輸入脈衝在電平翻轉時脈衝計數器timx_cnt的當前計數值,從而實現脈衝的頻率測量;在輸出時被用來儲存乙個脈衝數值,把這個數值用於與脈衝計數器timx_cnt的當前計數值進行比較,根據比較結果進行不同的電平輸出。

2)pwm輸出過程分析

通用定時器可以利用gpio引腳進行脈衝輸出,在配置為比較輸出、pwm輸出功能時,捕獲/比較暫存器timx_ccr被用作比較功能,下面把它簡稱為比較暫存器。

pwm輸出工作過程:若配置脈衝計數器timx_cnt為向上計數,而過載暫存器timx_arr被配置為n,即timx_cnt的當前計數值x在timxclk時鐘源的驅動下不斷累加,當timx_cnt的數值x大於n時,會重置timx_cnt數值為0並重新計數。

而在timx_cnt計數的同時,timx_cnt的計數值x會與比較暫存器timx_ccr預先儲存的數值a進行比較。當脈衝計數器timx_cnt的數值小於比較暫存器timx_ccr的值a時,輸出高電平(或低電平);相反,當脈衝計數器的數值大於或等於比較暫存器的值a時,輸出低電平(或高電平)。

如此就得到,週期為過載暫存器timx_arr儲存的數值(n+1)乘以觸發脈衝的時鐘週期,其脈衝寬度則為比較暫存器itmx_ccr的值a乘以觸發脈衝的時鐘週期,即輸出pwm占空比為a/(n+1).

3)測量輸入pwm

要測量的pwm脈衝通過gpio引腳輸入到定時器的脈衝檢測通道。把脈衝計數器timx_cnt配置為向上計數,過載暫存器timx_arr的n值配置為足夠大。

在輸入脈衝的上公升沿到達時,觸發ic1和ic2輸入捕獲中斷,這時把脈衝計數器timx_cnt的計數值復位為0,於是timx_cnt的計數值x在timxclk的驅動下從0開始不斷累加,直到輸入脈衝出現下降沿,觸發ic2捕獲事件,此時捕獲暫存器timx_ccr2把脈衝計數器timx_cnt的當前值儲存起來,而timx_cnt繼續累加,直到輸入脈衝出現第二個上公升沿,觸發ic1捕獲事件,此時timx_cnt的當前計數值被儲存到timx_ccr1.

timx_ccr1(加1)的值乘以timxclk的週期,即為待檢測的pwm輸入脈衝週期,timx_ccr2(加1)的值乘以timxclk的週期,就是待檢測pwm輸入脈衝的高電平時間。

4)定時器的時鐘源

注:以上內容來自《stm32庫開發實戰指南》

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...

STM32定時器中斷

本實驗的目的是通過定時器中斷控制led燈的亮滅。筆者所用ide為iar,採用標準庫 3.5韌體庫 通過定時器產生中斷來控制led。ifndef led h define led h include stm32f10x gpio.h include stm32f10x.h include stm32f...

STM32之定時器

stm32f4的定時器分布如下 其中基本定時器包括tim6 tim7,其結構最簡單,也具有最基本的定時功能,一是用於基本定時 產生時基 二是用於驅動dac數模轉換器。其中通用定時器包括time2 time5,time9 time14共10個 通用定時器除了包含基本定時器的功能外還有輸入捕獲 輸出比較...