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