stm32通用定時器

2021-06-21 13:43:53 字數 2059 閱讀 3495

stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做pwm輸出或者輸入捕獲功能。

時鐘源問題:

名為timx的有八個,其中tim1和tim8掛在apb2匯流排上,而tim2-tim7則掛在

apb1匯流排上。其中tim1&tim8稱為高階控制定時器(advanced controltimer).他們所在的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的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的解析度,這也正是設計這個倍頻器的初衷。

tim通用定時器配置步驟:

1.配置tim時鐘  

rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);

rcc_apb2periphclockcmd(rcc_apb2periph_tim1,enable);

2.定時器基本配置

void tim2_configuration(void)

tim_period設定了在下乙個更新事件裝入活動的自動重裝載暫存器週期的值。它的取值必須在0x0000和0xffff之間。

tim_prescaler設定了用來作為timx時鐘頻率除數的預分頻值。它的取值必須在0x0000和0xffff之間。

tim_clockdivision的作用是做一段延時,一般在特殊場合的時候會用到,可不關心。

tim_countermode選擇了計數器模式。

tim_countermode_up

tim向上計數模式

tim_countermode_down

tim向下計數模式

tim_countermode_centeraligned1 

tim**對齊模式1計數模式

tim_countermode_centeraligned2 

tim**對齊模式2計數模式

tim_countermode_centeraligned3 

tim**對齊模式3計數模式

微控制器時鐘頻率72mhz,apb1二分頻36mhz,故tim2自動2倍頻至72mhz,故定時器中斷頻率為72000000/36000/5=400hz

3.使能定時器中斷tim_cmd(tim2, enable);

4.配置nvic。

nvic_initstructure.nvic_irqchannel = tim2_irqchannel;

nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;

nvic_initstructure.nvic_irqchannelsubpriority =4; 

nvic_initstructure.nvic_irqchannelcmd = enable;

nvic_init(&nvic_initstructure);

5.寫中斷函式

void tim2_irqhandler(void)  

STM32通用定時器配置

stm32通用定時器配置 一 stm32 通用定時器原理 stm32 系列的cpu 有多達8 個定時器,其中tim1 和tim8 是能夠產生三對pwm 互補輸出的高階定時器,常用於三相電機的驅動,它們的時鐘由apb2 的輸出產生。其它6 個為普通定時器,時鐘由apb1 的輸出產生。下圖是stm32參...

STM32 通用定時器基本定時功能

1.stm32的timer簡介 stm32中一共有11個定時器,其中2個高階控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的systick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。定時器計數器解析度 計數器型...

STM32 通用定時器基本定時功能

1.stm32的timer簡介 stm32中一共有11個定時器,其中2個高階控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的systick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。定時器計數器解析度 計數器型...