A)高級控制定時器TIM1和TIM8
高級定時器適合多種用途,包含輸入捕獲、輸出比較、PWM、帶死區(qū)控制的PWM等,所以可以用來做電機控制。
B)通用定時器TIM2、TIM3、TIM4、TIM5
通用定時器就是基本的定時器,同51單片機中定時器的概念。
C)基本定時器TIM6和TIM7
基本定時器可以為通用定時提供時間基準(zhǔn),可以為DAC提供時鐘。
2. 通用定時器功能介紹
3. 通用定時器操作步驟
操作通用定時器時主要有如下幾部:
A)打開定時器的時鐘
定時器的時鐘控制寄存器為:APB1ENR,如下:
操作方式為RCC->APB1ENR |= (1<<0);??//打開TIM2時鐘
B)設(shè)置分頻系數(shù)和重裝值
PSC寄存器為預(yù)分頻系數(shù)設(shè)置寄存器,ARR為初值裝載寄存器,定時器2操作方式如下:
? ?? ???TIM2->ARR? ???= 9;? ?? ???//設(shè)置定時器重裝初值
? ?? ???TIM2->PSC? ???= 7199;? ?//設(shè)置預(yù)分頻系數(shù)
假設(shè)定時器的運行主頻為72Mhz,經(jīng)過7200分頻后,定時器2的主頻為10000Hz,則初值為1ms的計算方式如下:
(1/10000)*T = 1ms = 0.001s
T = 0.001*10000 = 10
C)允許更新中斷
該步驟通過DIER寄存器來實現(xiàn),定時器2的操作方式如下:
? ?? ?? TIM2->DIER ??|= (1<<6);
? ?? ???TIM2->DIER? ?|= (1<<0);?
D)允許自動重裝和使能定時器
該步驟通過CR1寄存器來實現(xiàn),TIM2的操作方式如下:
? ?? ?? TIM2->CR1 ?? |= (1<<7);
? ?? ???TIM2->CR1? ? |= (1<<0);?
E)定時器全局中斷使能
該步驟的操作方式如下:? ?? ???
NVIC->ISER[0]|= (1<<28);?
ISER總共有4組,從[0]-[3],每組有32位,即從0-31,定時器的中斷向量是第28位,比如外部中斷10-15的中斷向量為第40位,則寫法如下:
NVIC->ISER[1]|= (1<<(40-32));?
F)編寫中斷服務(wù)函數(shù)
定時器的中斷入口函數(shù)為TIMx_IRQHandler(),TIM2操作如下:
void TIM2_IRQHandler()
{
? ?? ???if((TIM2->SR&0X0001) == 1
? ?? ???{
? ?? ?? ?? ?...
? ?? ???}? ?? ???
? ?? ???TIM2->SR &= ~(1<<0);? ?
}
G)清中斷標(biāo)志
最后一步不要忘了,記得清中斷標(biāo)志。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!