stm32 定時器TIM時鐘步驟

2021-09-25 02:31:32 字數 1860 閱讀 2576

1)tim3 時鐘使能 。

rcc_apb1periphclockcmd(rcc_apb1periph_timx, enable); //時鐘使能

2) 初始化定時器引數,設定自動重灌值, 分頻係數,計數方式等。

定時器的初始化函式tim_timebaseinit

voidtim_timebaseinit(tim_typedef*timx,

tim_timebaseinittypedef* tim_timebaseinitstruct); //前面指是哪個tim,後面指timebaseinitstruct結構體指標。

tim_timebaseinittypedef  tim_timebasestructure;   //定義tim初始化型別結構體變數

tim_timebasestructure.tim_period = 5000;   //設定自動過載計數週期值

tim_timebasestructure.tim_prescaler =7199;   //設定分頻係數

tim_timebasestructure.tim_clockdivision = tim_ckd_div1; //設定時鐘分頻因子

tim_timebasestructure.tim_countermode = tim_countermode_up; //設定為向上計數方式

tim_timebaseinit(timx, &tim_timebasestructure);  //初始化時鐘timx

3) 設定 tim3_dier 允許更新中斷 。

void tim_itconfig(tim_typedef* timx, uint16_t tim_it, functionalstate newstate);

第乙個引數是選擇定時器號,這個容易理解,取值為 tim1~tim17。

第二個引數非常關鍵,是用來指明我們使能的定時器中斷的型別,定時器中斷的型別有很

多種,包括更新中斷 tim_it_update,觸發中斷 tim_it_trigger,以及輸入捕獲中斷等等。

第三個引數就很簡單了, 就是失能還是使能 。

4) tim3 中斷優先順序設定。 

nvic_initstructure.nvic_irqchannel = tim3_irqn; //tim3 中斷

nvic_initstructure.nvic_irqchannelpreemptionpriority = 0; //先佔優先順序 0 級

nvic_initstructure.nvic_irqchannelsubpriority = 3; //從優先順序 3 級

nvic_initstructure.nvic_irqchannelcmd = enable; //irq 通道被使能

nvic_init(&nvic_initstructure); //④初始化 nvic 暫存器

tim_cmd(tim3, enable); //⑤使能 tim3 

5) 允許 timx工作,也就是使能 timx。 

void tim_cmd(tim_typedef* timx, functionalstate newstate) ;

6) 編寫中斷服務函式。 

在韌體庫函式裡面, 用來讀取中斷狀態暫存器的值判斷中斷型別的函式是:

itstatus tim_getitstatus(tim_typedef* timx, uint16_t) ;

韌體庫中清除中斷標誌位的函式是: 

void tim_clearitpendingbit(tim_typedef* timx, uint16_t tim_it) ;

例如:我們判斷定時器3是否發生更新(溢位)中斷,並清除中斷標誌位。

if (tim_getitstatus(tim3, tim_it_update) != reset)

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定時器(TIM)之通用定時器

stm32的通用定時器有四個,分別是tim2,tim3,tim4,tim5,有以下功能 通用定時器的框圖如下 從圖中可以看出,通用定時器timx的觸發源 計數器時鐘的時鐘源 有四個 1 內部時鐘 clk int 2 外部時鐘模式1 外部輸入引腳 tix 分別經timx chx通道傳入 3 外部時鐘模...

STM32 定時器 TIM 定時如何計算?

stm32定時器定時計算通過計數溢位計算,也就是說計數溢位就觸發中斷 計算公式 timeout prescaler 1 period 1 timeclockfren 解釋下公式引數意義 timeout 定時器溢位時間 單位為us 多少觸發 進入 一次tim中斷。prescaler 分頻tim時鐘的預...