STM32 定時器 定時時間的計算

2021-06-07 03:17:26 字數 1141 閱讀 6821

**:

假設 系統時鐘是72mhz,tim1 是由pclk2 (72mhz)得到,tim2-7是由 pclk1 得到

關鍵是設定 時鐘預分頻數,自動重裝載暫存器週期的值

/*每1秒發生一次更新事件(進入中斷服務程式)。rcc_configuration()的systeminit()的

rcc->cfgr |= (uint32_t)rcc_cfgr_ppre1_div2表明tim3clk為72mhz。因此,每次進入中

斷服務程式間隔時間為

((1+tim_prescaler )/72m)*(1+tim_period )=((1+7199)/72m)*(1+9999)=1秒 */(經過驗證,此公式是對的)

定時器的基本設定

1、 tim_timebasestructure.tim_prescaler = 7199;//時鐘預分頻數 例如 :時

鐘頻率=72/(時鐘預分頻+1)

2、tim_timebasestructure.tim_period = 9999; // 自動重裝載暫存器週期的值(定時

時間) 累計 0xffff個頻率後產生個更新或者中斷(也是說定時時間到)

3、 tim_timebasestructure.tim_countermode = tim1_countermode_up; //定時器

模式 向上計數

4、 tim_timebasestructure.tim_clockdivision = 0x0; //時間分割值

5、 tim_timebaseinit(tim2, &tim_timebasestructure);//初始化定時器2

6、 tim_itconfig(tim2, tim_it_update, enable); //開啟中斷 溢位中斷

7、 tim_cmd(tim2, enable);//開啟定時器

或者:tim_timebasestructure.tim_prescaler = 35999;//分頻35999 72m/

(35999+1)/2=1hz 1秒中斷溢位一次

tim_timebasestructure.tim_period = 2000; //計數值2000

((1+tim_prescaler )/72m)*(1+tim_period )=((1+35999)/72m)*(1+2000)=1秒 */

STM32 定時器 定時時間的計算

假設 系統時鐘是72mhz,tim1 是由pclk2 72mhz 得到,tim2 7是由 pclk1 得到 關鍵是設定 時鐘預分頻數,自動重裝載暫存器週期的值 每1秒發生一次更新事件 進入中斷服務程式 rcc configuration 的systeminit 的 rcc cfgr uint32 t...

STM32定時器時間的計算

tim2 tim5的時鐘不是直接來自於apb1,而是來自於輸入為apb1的乙個倍頻器。這個倍頻器的作用是 當apb1的預分頻係數為1時,這個倍頻器不起作用,當apb1的預分頻係數為其他數值時 即預分頻係數為2 4 8或16 這個倍頻器起作用,定時器的時鐘頻率等於apb1的頻率的2倍。分頻係數就是對定...

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...