久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > STM8L探索套件學習筆記-TIM定時器(五)

STM8L探索套件學習筆記-TIM定時器(五)

作者: 時間:2016-11-24 來源:網絡 收藏
STM8L的定時器分:高級定時器TIM1,通用定時器TIM2/3/5,基礎定時器TIM4。其中高級定時器和通用定時器都是16位定時器,不同之處高級定時器有DMA功能,基礎定時器是8位定時器,它們的更詳細功能可以參考說明手冊。

本文引用地址:http://cqxgywz.com/article/201611/320835.htm

今天我們使用基礎定時器TIM4做一個延時的任務,采用兩種方式實現:查詢和中斷的方法。

1查詢的方法就是查詢狀態寄存器中的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;

}



評論


技術專區

關閉