1. STM32定時器分類
STM32定時器可以分為3類:
A)高級控制定時器TIM1和TIM8
高級定時器適合多種用途,包含輸入捕獲、輸出比較、PWM、帶死區(qū)控制的PWM等,所以可以用來做電機(jī)控制。
B)通用定時器TIM2、TIM3、TIM4、TIM5
通用定時器就是基本的定時器,同51單片機(jī)中定時器的概念。
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è)定時器的運(yùn)行主頻為72Mhz,經(jīng)過7200分頻后,定時器2的主頻為10000Hz,則初值為1ms的計算方式如下:
(1/10000)*T = 1ms = 0.001s
T = 0.001*10000 = 10
C)允許更新中斷
該步驟通過DIER寄存器來實(shí)現(xiàn),定時器2的操作方式如下:
TIM2->DIER |= (1<<6);
TIM2->DIER |= (1<<0);
D)允許自動重裝和使能定時器
該步驟通過CR1寄存器來實(shí)現(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)志。