Cortex-M3的内核中包括一个SysTick时钟。SysTick 为一个24位递减计数器,SysTick设定初值并使能后,每通过1个体系时钟周期,计数值就减1。计数到0时,SysTick计数器主动重装初值并持续计数,一起内部的COUNTFLAG标志会置位,触发中止(假如中止使能)。
在STM32的运用中,运用Cortex-M3 内核的SysTick作为守时时钟,设定每一毫秒发生一次中止,在中止处理函数里对N减一,在Delay(N)函数中循环检测N是否为0,不为0则进行循环等候;若为0则封闭SysTick时钟,退出函数。
外部晶振为8MHz,9倍频,体系时钟为72MHz,SysTick的最高频率为9MHz(最大为HCLK/8),在这个条件下,把SysTick 效验值设置成9000,将SysTick 时钟设置为9MHz, 就可以发生1ms的时刻基值,即SysTick发生1ms的中止。
延迟时刻将不随体系时钟频率改动。
固件库(ST)中SysTick的相关函数:
1、SysTick_CounterCmd(
2、SysTick_ITConfig (
3、SysTick_CLKSourceConfig( ) //设置SysTick时钟源。
4、SysTick_SetReload ( )
5、SysTick_GetCounter( )
6、SysTick_GetFlagStatus( ) //检测测定的SysTick是否被符号
初始化相关模块:
SysTick_CounterCmd(SysTick_Counter_Disable);
SysTick_ITConfig(DISABLE);
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
中止处理:
{
延时代码:
}
运用代码:
Delay(300); // 延时 300ms