程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> stm32-M3系統時基定時器

stm32-M3系統時基定時器

編輯:C++入門知識

stm32-M3有一個系統時基定時器,其為一個24位遞減計數器。系統時基定時器設置初值並使能後,每經過一個系統時鐘周期,計數器就減一,當計數器遞減到0時,系統時基定時器自動重裝載初值,並繼續向下計數,同時內部的COUNTFLAG標志會置位,觸發中斷。

系統時基定時器功能簡單,只能提供一個時基定時器,作為滴答時鐘。在外部晶振8MHZ,通過PLL9倍頻,系統時鐘為72MHz,系統時鐘定時器的遞減頻率可以設為9MHz(HCLK/8),在這個條件下,把系統定時器的初值設置為90000,就能夠產生10ms的時間基值。如果開啟中斷,則產生10ms的中斷。值得欣慰的是時基定時器的中斷並不需要清除中斷位,系統會自動清除。

下面通過一個簡單的程序,讓燈1s跳變一次。


[cpp] 
void SysTick_Configuration(void) 

   /* Configure HCLK clock as SysTick clock source */ 
   SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //系統時鐘8分頻 
   /* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */ 
   SysTick_SetReload(90000); //周期10ms 
   /* Enable the SysTick Interrupt */ 
   SysTick_ITConfig(ENABLE); //打開中斷 
  /* Enable the SysTick Counter */ 
  SysTick_CounterCmd(SysTick_Counter_Enable); //允許計數 

 
void SysTickHandler(void) 

    num++; 
    if(num == 100) 
    {   num = 0; //計數器清0 
    LED ();//LED跳變函數 
    } 

系統時基定時器是一個很方便的定時器,沒有TIM定時器那麼麻煩,使用起來很方便,可以進行一些簡單的定時。


作者:rongdeguoqian

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved