配置定時器遇到的問題
舉例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 外部時鐘模...