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
{
}
注意事项:
- SysTick是一个24位定时器,所以最大重装值使2^24=16777215,注意不要超过此最大范围
- 启动SysTick要确保,定时器的计数器在上一次重装载之后没有再次开始计数,以保证定时的准确性
- SysTick是ARM Cortex-M3的标准配备,,所以SysTick并不是stm32的外设,不需要再RCC寄存器组打开他的时钟
- 每次SysTick溢出后,会置位计数标志位和中断标志位,计数标志位在计数值重载后被清除,而中断标志位也会随中断服务响应被清除,所以两个标志位不需要手动清除