SysTick是一个24位的递减计数器。 SysTick设定初值并使能后,每经过一个时钟周期,计数器就减1,当递减到到0时便触发中断,同时SysTick计数器会自动重装初值并继续计数。
1、SysTick时钟源的设置
SysTick的时钟源有HCLK和HCLK/8两种,可以通过设置SysTick->CTRL来选择。SysTick->CTRL&= 0xfffffffb,设置时钟源为HCLK/8。SysTick->CTRL|= 0x00000004,设置时钟源为HCLK。
2、SysTick计数值的设置
SysTick有两个寄存器SysTick->VAL和SysTick->LOAD。首先要向SysTick->LOAD装载计数值。当SysTick->VAL清零后由SysTick->LOAD给SysTick->VAL赋值。计数器使能后,每过一个时钟周期,SysTick->VAL就会减1,减到0后SysTick->VAL会自动重装,并触发中断。
3、SysTick计数器开启和关闭
SysTick->CTRL|= 0x00000001,SysTick计数器开启。SysTick->CTRL&= 0xffffffffe,SysTick计数器关闭。
SysTick计数器的使用步骤:
前提是配置好SysTick计数器的中断。
1、设置时钟源
1)使用库函数实现:利用函数void SysTick_CLKSourceConfig(uint32_tSysTick_CLKSource),形参为SysTick_CLKSource_HCLK和SysTick_CLKSource_HCLK_Div8。
2)直接操作寄存器:如上面所示。
2、设置计数值
根据SysTick计数器的时钟频率和要延迟的时间,计算出计数值,装载进SysTick->LOAD。然后清空SysTick->VAL。
3、开启SysTick计数器
直接操作寄存器开启计数器,方法如上所示。
4、查询计数器的值是否减到0。减到0后即达到延迟要求,这时就可以关闭SysTick计数器并清空SysTick->VAL。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。