1. 程式人生 > >STM32-自學筆記(9.SysTick定時器控制LED燈閃爍,程式用到的庫函式介紹)

STM32-自學筆記(9.SysTick定時器控制LED燈閃爍,程式用到的庫函式介紹)

1.SysTick_CLKSourceConfig

函式原型:viod SysTick_CLKSourceConfig (u32 SysTick_CLKSource)

功能:選擇SysTick的時鐘源

引數:SysTick_CLKSource:SysTick時鐘源

引數:SysTick_CLKSource

SysTick_CLKSource_HCLK_Div8:SysTick時鐘源等於系統時鐘的8分頻。

SysTick_CLKSource_HLCK:SysTick時鐘源等於系統時鐘。

例子:viod SysTick_CLKSourceConfig (SysTick_CLKSource_HLCK);     //選用AHB時鐘作為SysTick的時鐘源。

 

2.SysTick_SetReload

函式原型:void SysTick_SetReload (u32 Reload)

功能:設定SysTick的重灌載值

引數:Reload:重灌載值。取值必須為1~0x00FFFFFF

返回值:無

例子:SysTick_SetReload (0xFFFF);     //設定SysTick定時器的重灌值為0xFFFF

 

3.SysTick_CounterCmd

函式原型:void SysTick_CounterCmd (u32 SysTick_Counter)

功能:使能或失能SysTick計數器

引數:SysTick_Counter:SysTick計數器新狀態。

返回值:無

引數:SysTick_Counter

SysTick_Counter_Disable:失能計數器

SysTick_Counter_Enable:使能技術器

SysTick_Counter_Clear:清除計數值為0

例子:SysTick_CounterCmd (SysTick_Counter_Enable);       //使能SysTick計數器

 

4.SysTick_ITConfig

函式原型

:void SysTick_ITConfig (FunctionalState NewState)

功能:使能或失能SysTick中斷

引數:NewState:SysTick中斷的新狀態。可以取ENABLE或DISABLE

返回值:無

例子:SysTick_ITConfig (ENABLE);         //使能SysTick中斷

 

5.SysTick_GetCounter

函式原型:u32 SysTick_GetCounter (void)

功能:獲取SysTick計數器的當前值

引數:無

返回值:SysTick計數器的值

例子://獲取當前SysTick定時器的計數值

u32 SysTickCurrentCounterValue;

SysTickCurrentCounterValue=SysTick_GetCounter ();

 

6.SysTick_GetFlagStatus

函式原型:FlagStatus SysTick_GetFlagStatus (u8 SysTick_FLAG)

功能:檢測指定的SysTick標誌位設定與否

引數:SysTick_FLAG:待檢查的SysTick標誌位

返回值:SysTick_FLAG的新狀態

引數:SysTick_FLAG

SysTick_FLAG_COUNT:自上一次被讀取後,計數器計數至0

SysTick_FLAG_SKEW:校準中斷

SysTick_FLAG_NOREF:參考時鐘未提供

例子://檢查計數標誌是否置位

FlagStatus Status;

Status=SysTick_GetFlagStatus (SysTick_FLAG_COUNT);

if (Status==RESET)

{

}

else

{

}

 

注意事項

  1. SysTick是一個24位定時器,所以最大重灌值使2^24=16777215,注意不要超過此最大範圍
  2. 啟動SysTick要確保,定時器的計數器在上一次重灌載之後沒有再次開始計數,以保證定時的準確性
  3. SysTick是ARM Cortex-M3的標準配備,,所以SysTick並不是stm32的外設,不需要再RCC暫存器組開啟他的時鐘
  4. 每次SysTick溢位後,會置位計數標誌位和中斷標誌位,計數標誌位在計數值過載後被清除,而中斷標誌位也會隨中斷服務響應被清除,所以兩個標誌位不需要手動清除