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
函式原型
功能:使能或失能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
{
}
注意事項:
- SysTick是一個24位定時器,所以最大重灌值使2^24=16777215,注意不要超過此最大範圍
- 啟動SysTick要確保,定時器的計數器在上一次重灌載之後沒有再次開始計數,以保證定時的準確性
- SysTick是ARM Cortex-M3的標準配備,,所以SysTick並不是stm32的外設,不需要再RCC暫存器組開啟他的時鐘
- 每次SysTick溢位後,會置位計數標誌位和中斷標誌位,計數標誌位在計數值過載後被清除,而中斷標誌位也會隨中斷服務響應被清除,所以兩個標誌位不需要手動清除