STM32通用定時器庫函式設定

2021-06-23 07:58:06 字數 2215 閱讀 1880

通用定時器

stm32的通用定時器為:tim2、tim3、tim4和tim5

在使用通用定時器時利用庫函式直接設定定時器如下:

1.使能定時器tim_x的時鐘:(x=2、3、4、5)

rcc_apb1periphclockcmd(rcc_apb1periph_timx,enable);

2.計算要定時的時間,根據定時時間來設定分頻數和最大計數值(以向上計數為例子),其中計算關係如下:

系統時鐘(一般為72mhz)=

定時器分頻數 * 計數值

假如分頻數為7200,則定時器時鐘為:72mhz/7200=10khz,定時器每次計數時間間隔為1/10000秒,假如定時1秒,則要計數10000次,因此計數器的最大計數值為9999,因為計數器從零開始計數。

3.將計算好的分頻數和計數值分別賦值以上面定時為例,如下:

/

自動重灌的計數值

tim_timebasestructure.tim_period = (10000 - 1);

//

這個就是預分頻係數

tim_timebasestructure.tim_prescaler =7200 ;

//

數字濾波器,定時的時候不涉及此功能,為零即

tim_timebasestructure.tim_clockdivision = 0;

//

計數模式選擇,此處設定為向上模式

tim_timebasestructure.tim_countermode=tim_countemode_up;

//

定時基本設定((x=2、3、4、5))

tim_timebaseinit(timx, &tim_timebasestructure);

//

清除定時器x的中斷溢位標識

tim_clearitpendingbit(timx,tim_it_update);

//

開定時器x溢位中斷

tim_itconfig(tim5,tim_it_update, enable);

//

計數器使能,開始工作

tim_cmd(tim5, enable);

到此通用定時器的定時功能配置完成,以上配置**可寫入

void timx_init(void)

函式中,函式名自己可變。別忘了在函式中的第一句寫入:tim_timebaseinittypedef  tim_timebasestructure;

4.中斷配置,這個按照下面的函式複製即可

void nvic_configuration(void)

//定時器中斷配置

5. 在stm32f10x_it.c新增定時器timx的中斷函式:

voidtim5_irqhandler(void)

//

完成事情和判斷後,清除中斷

tim_clearitpendingbit(tim5,tim_it_update);

}

}

到此,定時器定時中斷功能實現了

stm32通用定時器

stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做pwm輸出或者輸入捕獲功能。時鐘源問題 名為timx的有八個,其中tim1和tim8掛在apb2匯流排上,而tim2 tim7則掛在 apb1匯流排上。其中tim1 tim8稱為高階控制定時器 adva...

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個定時器。定時器計數器解析度 計數器型...