×

STM32开发板教程之SysTick定时器的详细资料概述

消耗积分:0 | 格式:rar | 大小:0.19 MB | 2018-11-15

分享资料个

  SysTick 定时器

  SysTick 是一个被放在NVIC 中的定时器,主要目的是为给操作系统提供一个硬件上的中断(号称滴答中断)。何为滴答中断呢?操作系统进行运转的时候,会有自己的工作节拍,把整个时间段分成很多的任务运行,这样可以确保任何一个任务都不会霸占整个系统不放,或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此需要一个定时器来产生周期性的中断,而且还要让用户程序不能随意访问它的寄存器,以维持操作系统的工作节拍。

  该定时器的时钟源可以是内部时钟(FCLK,CM3 上的自由运行时钟),或者是外部时钟(CM3 处理器上的STCLK 信号)。对于不同产品之间的时钟频率可能会不大相同,因此,需要阅读芯片的使用手册来选择要使用的时钟源。在STM32中SysTick 以HCLK(AHB 时钟)HCLK/8 作为运行时钟。Systick 定时器属于cortex内核部件,可以参考《CortexM3 权威指南》或是STM32 编程手册来了解。

  SysTick 是一个24 位的定时器,一次最多可以计数224 个时钟脉冲,这个脉冲计数值被保存到当前计数值寄存器STK_VAL 中,只能向下计数,每收到一个时钟脉冲STK_VAL 的值就向下减1,直到0 时,由硬件自动把重载寄存器STK_LOAD中保存的数据加载到STK_VAL,重新向下计数。并且计数至0 时触发异常,就进入中断服务函数中处理事件。

  SysTick 也有控制寄存器,想要完成以上工作也许要对寄存器进行配置。它的控制寄存器STK_CTRL 有32 位,但只用到四位,分别是:

  Bit0:为SysTick 定时器的使能位,为1 时使能定时器,为0 时关闭定时器。

  Bit1:为异常触发使能位,为1 时STK_VAL 计数至0 会触发SysTick 异常,为0 时不触发异常。

  Bit2:为SysTick 的时钟选择位,为1 时SysTick 的时钟位AHB 时钟,为0时时钟为AHB/8。

  Bit16:为计数至0 的标志位,若STK_VAL 计数至0,此标志位会被置1。

  SysTick 还有一个用于校准的寄存器STK_CALIB,不常用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !