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

SYSTick 定時器

編輯:關於C語言

    CM3 內核的處理器,內部包含了一個 SysTick 定時器,(SysTick 的時鐘源自 HCLK 的 8 分頻,8個系統時鐘周期systick跳一個,即8*1/72M=1/9 us)SysTick  是一個 24  位的倒計數定時器,當計到 0  時,將從RELOAD  寄存器中自動重裝載定時初值。只要不把它在 SysTick  控制及狀態寄存器中的使能位清除,就永不停息。

    利用 STM32 的內部 SysTick 來實現延時的,這樣既不占用中斷,也不占用系統定時器。因為在 ucos 下 systick 不能再被隨意更改,如果我們還想利用 systick 來做 delay_us 或者delay_ms 的延時,就必須想點辦法了,這裡我們利用的是時鐘摘取法。以 delay_us 為例,比如delay_us (50),在剛進入 delay_us 的時候先計算好這段延時需要等待的 systick 計數次數,這裡為 50*9 (假設系統時鐘為 72Mhz,那麼 systick 每增加 1,就是 1/9us) ,然後我們就一直統計 systick的計數變化,直到這個值變化了 50*9,一旦檢測到變化達到或者超過這個值,就說明延時 50us時間到了。———實質上就是不改變systick基本單位時長,以基本單位時長為基本元做多次到達摘取。

 

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