一、SysTick
STM32內核中有一個系統定時器,它是一個24位遞減計數器。工作原理是系統時基定時器設定初值并使能后,每經過1個系統時鐘周期,計數值就減,當計數值減到0時,系統定時器會重新自動重裝初值,并繼續下一次計數,同時內部的COUNTFLAG標志位會置位。觸發中斷。
在很早的固件庫中,提供了很多函數,來對SysTick進行設置,但是到了3.5版本的標準固件庫中,移除了相關驅動函數,用戶必須調用CMSIS 定義的函數,其中CMSIS只提供了一個Systick設置的函數,替代了STM32原來有的所有的驅動函數,這樣做的目的,可能是簡化Systick 的設置,可是降低了用戶對SysTick的可控性。
在CMSIS中提供的函數是
其中這個函數定義在Core_cm3.h中 ,源代碼如下所示:
從上面的函數中可以看出,這個函數把Systick的初值,中斷優先級,使能中斷,開啟定時器都完成了。大大簡化了程序。
其中ticks 代表的是初值。例如系統時鐘是72Mhz 那么要產生1ms的時基,那么我們可以這樣去寫。
SysTick_Config(SystemCoreClock/1000);