天天看点

stm32之Systick(系统时钟)

Systick的两大作用:

  1、可以产生精确延时;

  2、可以提供给操作系统一个单独的心跳(时钟)节拍;

通常实现Delay(N)函数的方法为:

  for(i=0;i<x;i++)

    ;

  对于STM32系统微处理器来说,执行一条指令只有几十ns(纳秒),进入for循环,要实现N毫秒的x值非常大;而由于系统频率的宽广,很难计算出延时N毫秒的精确值;针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N);

  cortex的内核中包含一个SysTick时钟,SysTick为一个24位递减计数器;SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1;计数到0,SysTick计数器自动装载初值并继续计数,同时内部的COUNTFLAG标志会置位;触发中断(前提是中断使能);

  如果外部晶振(即外接的晶振)位8Mhz,经过内部9分频;系统时钟则为72Mhz(cpu的时钟);SysTick的最高频率为9Mhz(cpu时钟的8分频);在这个条件下;如果设置SysTick值为9000;而SysTick是9Mhz;则能产生1ms的时间基;即SysTick产生1ms的中断;

 

  SysTick相关的寄存器:

  CTRL:  SysTick控制和状态寄存器;

  LOAD:  SysTick重装载值寄存器;

  VAL:   SysTick当前寄存器;(重新写入的时候;会把状态寄存器的FLAG清零)

  CALIB:  SysTick校准值寄存器;

SysTick设置步骤:(使用ST的函数库使用Systick的方法)

  1、调用SysTick_CounterCmd()失能SysTick计数器;

  2、调用SysTick_ITConfig()失能SysTick中断;

  3、调用SysTick_CLKSourceConfig()设置SysTick时钟源;

  4、调用SysTick_SetReload() 设置SysTick重装载值;

  5、调用SysTick_ITConfig() 使能SysTick中断;

  6、调用SysTick_CounterCmd()  开启SysTick计数器;

继续阅读