STM8L探索套件學(xué)習(xí)筆記-TIM定時(shí)器(五)
今天我們使用基礎(chǔ)定時(shí)器TIM4做一個(gè)延時(shí)的任務(wù),采用兩種方式實(shí)現(xiàn):查詢和中斷的方法。
1查詢的方法就是查詢狀態(tài)寄存器中的UIF位(update interrupt flag)是否置位,主要代碼:
void delay_ms(u16 n_ms)
{
/* Init TIMER 4 */
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);
/* Init TIMER 4 prescaler: / (2^6) = /64 */
TIM4->PSCR = 6;
/* HSI div by 1 --> Auto-Reload value: 16M / 64 = 1/4M, 1/4M / 1k = 250*/
TIM4->ARR = 250;
/* Counter value: 2, to compensate the initialization of TIMER*/
TIM4->CNTR = 2;
/* clear update flag */
TIM4->SR1 &= ~TIM4_SR1_UIF;
/* Enable Counter */
TIM4->CR1 |= TIM4_CR1_CEN;
while(n_ms--)
{
while((TIM4->SR1 & TIM4_SR1_UIF) == 0) ;
TIM4->SR1 &= ~TIM4_SR1_UIF;
}
/* Disable Counter */
TIM4->CR1 &= ~TIM4_CR1_CEN;
}
評論