STM32之Systick定時器解析
阿新 • • 發佈:2019-01-22
在ARM Cortex-M3核心中有一個Systick定時器,它是一個24位的倒計數定時器,當計數到0時,它就會從Load暫存器中自動重灌定時初值,只要不把CTRL暫存器中的ENABLE清0,它就永不停。對於滴答定時器的理解主要分為下面幾項:
1.滴答定時器的時鐘來源
看上面的圖會有一個錯覺,以為滴答定時器是系統時鐘的1/8,其實不是,滴答定時器的時鐘既可以是HCLK/8,也可以是HCLK,這個是通過CTRL暫存器進行設定的,瞭解這一點,對於作業系統的時鐘計算很重要,因為要精確計算時鐘時間。
2.滴答定時器的暫存器
從這裡就能看出,時鐘源有兩種選擇
3.滴答定時器的庫函式
(1)暫存器定義在哪?————在core_cm3.h中。
- typedefstruct {
- __IO uint32_t CTRL;
- __IO uint32_t LOAD;
- __IO uint32_t VAL;
- __I uint32_t CALIB;
- } SysTick_Type; …
- #define SysTick ((SysTick_Type *) SysTick_BASE)
①.選擇時鐘源
②設定過載數(reload)
③開啟中斷
④啟動滴答定時器