1、參考資料
《stm32f1開發指南-庫函式版本》-第13章 定時器中斷時實驗
《stm32中文參考手冊v10》-第14章 通用定時器
2、時鐘選擇
計數器時鐘可以由下列時鐘源提供:
①內部時鐘(ck_int)
②外部時鐘模式1:外部輸入腳(tix)
③外部時鐘模式2:外部觸發輸入(etr)
④內部觸發輸入(itrx):使用乙個定時器作為另乙個定時器的預分頻器,
如可以配置乙個定時器timer1而作為另乙個定時器timer2的預分頻器。
3、內部時鐘選擇
4、時鐘計算方法
除非apb1的分頻係數是1,否則通用定時器的時鐘等於apb1時鐘的2倍。
預設呼叫systeminit函式情況下:
sysclk = 72m
ahb時鐘=72m
apb1時鐘=36m
所以apb1的分頻係數=ahb/apb1時鐘=2
所以,通用定時器時鐘ck_int = 2*36m = 72m
5、計數器模式
通用定時器可以向上計數、向下計數、向上向下雙向計數模式。
①向上計數模式:計數器0計數到自動載入值(timx_arr),然後重新從0開始計數並且產生乙個計數器溢位事件。
②向下計數模式:計數器自動裝入的值(timx_arr)開始向下計數到0,然後從自動裝入的值重新開始,並產生乙個計數器向下溢位事件。
③**對齊模式(向上/向下計數):計數器從0開始計數到自動裝入的值-1,產生乙個計數器溢位事件,然後向下計數到1並且產生乙個計數器溢位事件;然後在從0開始重新計數。
6、向下計數模式(時鐘分頻因子=1)
向上計數模式(時鐘分頻因子=1)
**對齊計數模式(時鐘分頻因子=1 arr=6)
7、定時器中斷實驗相關暫存器
·計數器當前值暫存器cnt
·預分頻暫存器timx_psc
·自動重裝載暫存器(timx_arr)
·控制暫存器1(timx_cr1)
·dma中斷使能暫存器(timx_dier)
·常用庫函式
定時器引數初始化:
void tim_timebaseinit(tim_typedef* timx,tim_timebaseinittypedef* tim_timebaseinitstruct);
typedef struct
tim_timebaseinittypedef;
tim_timebasestructure.tim_period = 4999;
tim_timebasestructure.tim_prescaler =7199;
tim_timebasestructure.tim_clockdivision = tim_ckd_div1; t
im_timebasestructure.tim_countermode = tim_countermode_up;
tim_timebaseinit(tim3, &tim_timebasestructure);
·定時器使能函式:
void tim_cmd(tim_typedef* timx, functionalstate newstate)
·定時器中斷使能函式:
void tim_itconfig(tim_typedef* timx, uint16_t tim_it, functionalstate newstate);
·狀態標誌位獲取和清除
flagstatus tim_getflagstatus(tim_typedef* timx, uint16_t tim_flag);
void tim_clearflag(tim_typedef* timx, uint16_t tim_flag);
itstatus tim_getitstatus(tim_typedef* timx, uint16_t tim_it);
void tim_clearitpendingbit(tim_typedef* timx, uint16_t tim_it);
8、定時器中斷實現步驟
①使能定時器時鐘
rcc_apb1periphclockcmd();
②初始化定時器,配置arr,psc
tim_timebaseinit();
③開啟定時器中斷,配置nvic
void tim_itconfig();
nvic_init();
④使能定時器:
tim_cmd();
⑤編寫中斷服務函式
timx_irqhandler();
9、程式要求
通過定時器中斷配置,每500ms中斷一次,然後中斷服務函式中控制led實現led1狀態取反(閃爍)。
tout(溢位事件) = (arr+1)(psc+1)/tclk
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 定時器中斷實驗
led.h ifndef led h define led h include sys.h void led init void define led0 pbout 5 紅燈 define led1 peout 5 綠燈 endif led.c include led.h include stm32...
STM32定時器中斷
本實驗的目的是通過定時器中斷控制led燈的亮滅。筆者所用ide為iar,採用標準庫 3.5韌體庫 通過定時器產生中斷來控制led。ifndef led h define led h include stm32f10x gpio.h include stm32f10x.h include stm32f...