stm32中的系统滴答定时器使用

       系统滴答定时器对于stm32的初学者来说还是非常重要的,因为随着你学习的深入编程过程中肯定会调用延时函数,比如我之前的一些gpio相关的实验中。那么延时函数的编写也是几种方法的,一般开始接触都是让系统循环等待,利用stm32处理程序所用的机器时间去延时。这种延时函数如下图所示:

      

      很显然这是一个弊端很明显的做法,因为在延时函数进行时系统无法进行其它操作,这样大大降低了系统的效率。所以我们一般在编程中都会去利用定时器去定时。下面我就介绍下用系统滴答定时器的方法。

      SysTick定时器(系统滴答定时器)是一个倒计时定时器,被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间对其处理都是相同的。SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间对其处理都是相同的。该定时器用法也相对简单,主要它由4个寄存器来控制。其用法步骤如下:

1、配置时钟源,选择外部时钟(STCLK)还是内部时钟(FCLK),时钟分频等

2、计算重载值,并赋值给SysTick重装载数值寄存器重载值*系统周期=中断周期

3、开中断

4、使能SysTick定时器

具体编程实现过程如下图:

猜你喜欢

转载自blog.csdn.net/qq_42660303/article/details/81274146