以通用定時器(tim2-tim5)為例子
注:除非apb1的分頻係數是1,否則通用定時器的時鐘等於apb1時鐘的2倍。
預設呼叫systeminit函式情況下:
sysclk=168m
ahb時鐘=168m
apb1時鐘=42m
所以apb1的分頻係數=ahb/apb1時鐘=4
所以,通用定時器時鐘ck_int=2*42m=84m
tout(溢位時間) = (arr+1)(psc+1) / ck_int
假設定時500ms:arr設定為4999 ,psc設定為8399, ck_int預設為84m
① 使能定時器時鐘。
rcc_apb1periphclockcmd();
② 初始化定時器,配置arr,psc。
tim_timebaseinit();
③ 開啟定時器中斷,配置nvic。
tim_itconfig();
nvic_init();
④ 使能定時器。
tim_cmd();
⑥ 編寫中斷服務函式。
timx_irqhandler();
// 定時器tim3時鐘使能
rcc_apb1periphclockcmd( rcc_apb1periph_tim3,enable);
// 初始化定時器,配置arr psc
tim_timebaseinit( tim3, &tim_timebaseinitstruct)
tim_itconfig(tim3, tim_it_update, enable);
// 初始化tim3中斷
nvic_init(&nvic_initstruct);
// 使能tim3定時器
tim_cmd(tim3,enable);
參考文章 STM32筆記 Systick系統定時器
關於systick的具體概念不多記錄,systick是儲存乙個數值然後倒計數,每記到0會進行一次中斷,下面我們用 記錄 其中systemfrequency的值為72000000,可去查巨集定義,除去100000代表的是每這麼長時間週期就中斷一次,這個設定就是每720個週期進一次中斷,執行中斷的函式,...
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定時器 基本定時器1
我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...