首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

STM32 SysTick 定時器原理與延時函數實現(時鐘摘取法)

     編輯:關於C語言

SysTick 定時器簡介

CM3 核心處理器內建 SysTick 定時器,時鐘源自 HCLK 8 分頻(8 個系統時鐘週期 SysTick 加 1,即 8 × 1/72M = 1/9 μs)。SysTick 為 24 位遞減計數器,歸零時從 RELOAD 寄存器自動重載初值。只要不清除控制暨狀態寄存器的使能位,將持續運作。

利用 SysTick 實現精確延時

在 uC/OS 等系統下 SysTick 被佔用,若仍需 delay_us/delay_ms,可採用「時鐘摘取法」。以 delay_us(50) 為例:

  1. 進入函數先計算需等待的 SysTick 計數次數:50 × 9(假設 72MHz,SysTick 每 1/9μs 加 1)。
  2. 持續統計 SysTick 計數變化,直到變化量達到或超過 450。
  3. 檢測到條件滿足即表示延時 50μs 結束。

本質上不改變 SysTick 基本單位時長,以基本單位為元件做多次摘取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved