高階定時器 TIM1 TIM8 定時時間不准的問

2021-09-25 02:31:32 字數 1558 閱讀 7163

配置定時器遇到的問題

舉例1:

/*tim1時鐘配置*/

tim_timebasestructure.tim_prescaler = 2;       //預分頻(時鐘分頻)72m/(2+1)=24m

tim_timebasestructure.tim_countermode = tim_countermode_up;   //向上計數

tim_timebasestructure.tim_period = 65535;        //裝載值18k/144=125hz

tim_timebasestructure.tim_clockdivision = tim_ckd_div1;

tim_timebasestructure.tim_repetitioncounter = 0x0;

tim_timebaseinit(tim1,&tim_timebasestructure);

有必要知道一下定時時間的計算:(以前只是知道大概現在寫個帖子以防又忘了)

tim_timebasestructure.tim_prescaler = 2;//分頻2      72m/(2+1)=24mhz

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

((1+tim_prescaler )/72m)*(1+tim_period )=((1+2)/72m)*(1+65535)=0.00273秒=366.2hz */

以下就要注意一點啦!

(1)timx(1-8),在庫設定預設的情況下,都是72m的時鐘;

(2)tim_timebasestructure.tim_repetitioncounter=0;是重複計數,就是重複溢位多少次才給你來乙個溢位中斷,

如果初始化為0的話,計數器溢位一次,中斷一次!問題就解決啦!它對應的暫存器叫tim1 rcr.如果這個值不配置,上電的時候暫存器值可是隨機的,本來1秒中斷一次,可能變成n 秒中斷一次,讓你超級頭大!

如果想知道為什麼?那我們 來談談這個tim1 裡面的是重複計數吧(個人見解)

上圖說明: 當計數器溢位產生更新事件的時候,重裝載值會在計數器重新整理之前更新,這就不會出現計數器重新整理重裝載之前的值!

有請看下圖:

TIM基本定時器 定時

定時 輸出比較 輸入捕獲 互補輸出 分類 基本定時器 定時 通用定時器 定時 輸出比較 輸入捕獲 高階定時器 定時 輸出比較 輸入捕獲 互補輸出 f103系列的開發板一般是倆個高階定時器tim1 tim8 4個通用定時器tim2 3 4 5 2個基本定時器tim6 7 而根據容量的大小,又稍有區別。...

採用TIM1高階定時器產生PWM

stm32 的定時器功能十分強大,有 time1 和 time8 等高階定時器,也有 time2 time5 等通用定時器,還有 time6 和 time7 等基本定時器。而每種定時器的使用方法略有不同,之前寫產生pwm的程式使用的都是通用定時器,今天使用高階定時器tim1時發現怎麼也產生不了,後來...

STM32定時器(TIM)之通用定時器

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