STM32定時器簡介

原文地址:

http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html

http://www.cnblogs.com/daqiang/archive/2011/12/04/2275646.html

http://www.hb6.org/M/stm32-note-timer-interrupt.html

 

1.STM32的Timer簡介

STM32中一共有11個定時器,其中2個高級控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的SysTick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。

定時器

計數器分辨率

計數器類型

預分頻係數

產生DMA請求

捕獲/比較通道

互補輸出

TIM1

TIM8

16位

向上,向下,向上/向下

1-65536之間的任意數

可以

4

TIM2

TIM3

TIM4

TIM5

16位

向上,向下,向上/向下

1-65536之間的任意數

可以

4

沒有

TIM6

TIM7

16位

向上

1-65536之間的任意數

可以

0

沒有

其中TIM1和TIM8是能夠產生3對PWM互補輸出的高級定時器,常用於三相電機的驅動,時鐘由APB2的輸出產生。TIM2-TIM5是普通定時器,TIM6和TIM7是基本定時器,其時鐘由APB1輸出產生。由於STM32的TIMER功能太複雜了,所以只能一點一點的學習。因此今天就從最簡單的開始學習起,也就是TIM2-TIM5普通定時器的定時功能。

 

2.時鐘來源

名爲TIMx的有八個,其中TIM1和TIM8掛在APB2總線上,而TIM2-TIM7則掛在

APB1總線上。其中TIM1&TIM8稱爲高級控制定時器(advanced control timer).他們所在的APB2總線也比APB1總線要好。APB2可以工作在72MHz下,而APB1最大是36MHz。

定時器的時鐘不是直接來自APB1或APB2,而是來自於輸入爲APB1或APB2的一個倍頻器。

下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻係數爲1時,這個倍頻器不起作用,定時器的時鐘頻率等於APB1的頻率;當APB1的預分頻係數爲其它數值(即預分頻係數爲2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等於APB1的頻率兩倍。

假定AHB=36MHz,因爲APB1允許的最大頻率爲36MHz,所以APB1的預分頻係數可以取任意數值;當預分頻係數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻係數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。

有人會問,既然需要TIM2~7的時鐘頻率=36MHz,爲什麼不直接取APB1的預分頻係數=1?答案是:APB1不但要爲TIM2~7提供時鐘,而且還要爲其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。

再舉個例子:當AHB=72MHz時,APB1的預分頻係數必須大於2,因爲APB1的最大頻率只能爲36MHz。如果APB1的預分頻係數=2,則因爲這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。

 

3.普通定時器中斷

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章