码迷,mamicode.com
首页 > 其他好文 > 详细

stm32之Systick(系统时钟)

时间:2014-08-16 18:26:30      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:使用   for   时间   ad   on   设计   sp   程序   

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计数器;

 

stm32之Systick(系统时钟),布布扣,bubuko.com

stm32之Systick(系统时钟)

标签:使用   for   时间   ad   on   设计   sp   程序   

原文地址:http://www.cnblogs.com/chris-cp/p/3916642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!