stm32之Systick系統時鐘概念(延時和中斷)

Systick的兩大作用:

1、可以產生精確延時;

2、可以提供給操作系統一個單獨的心跳(時鐘)節拍;

通常實現Delay(N)函數的方法爲:

for(i=0;i<x;i++)

;

對於STM32系統微處理器來說,執行一條指令只有幾十ns(納秒),進入for循環,要實現N毫秒的x值非常大;而由於系統頻率的寬廣,很難計算出延時N毫秒的精確值;針對STM32微處理器,需要重新設計一個新的方法去實現該功能,以實現在程序中使用Delay(N);

cortex的內核中包含一個SysTick時鐘,SysTick爲一個24位遞減計數器;SysTick設定初值並使能後,每經過1個系統時鐘週期,計數值就減1;計數到0,SysTick計數器自動裝載初值並繼續計數,同時內部的COUNTFLAG標誌會置位;觸發中斷(前提是中斷使能);

如果外部晶振(即外接的晶振)位8Mhz,經過內部9倍頻;系統時鐘則爲72Mhz(cpu的時鐘);SysTick的時鐘源選擇可以是9Mhz(cpu時鐘的8分頻),還有72Mhz(如下寄存器位配置);
 在這裏插入圖片描述
  例如在個9Mhz時鐘源的條件下;如果設置SysTick值爲9000;而SysTick是9Mhz;則能產生1ms的時間基;即SysTick產生1ms的中斷;

SysTick相關的寄存器:

CTRL:  SysTick控制和狀態寄存器;

LOAD:  SysTick重裝載值寄存器;

VAL:   SysTick當前寄存器;(重新寫入的時候;會把狀態寄存器的FLAG清零)

CALIB:  SysTick校準值寄存器;

SysTick設置步驟:(使用ST的函數庫使用Systick的方法)

1、調用SysTick_CounterCmd()失能SysTick計數器;

2、調用SysTick_ITConfig()失能SysTick中斷;

3、調用SysTick_CLKSourceConfig()設置SysTick時鐘源;

4、調用SysTick_SetReload() 設置SysTick重裝載值;

5、調用SysTick_ITConfig() 使能SysTick中斷;

6、調用SysTick_CounterCmd() 開啓SysTick計數器;
 原文鏈接:https://www.cnblogs.com/chris-cp/p/3916642.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章