对于STM32滴答定时器复习

来源:互联网 发布:软件系统工程师学费 编辑:程序博客网 时间:2024/04/27 14:35

好久都没有复习一下关于STM32硬件部分的知识,每次都是在不停的抄袭其他人开发板的资料和程序,自己也没有一个很好的总结,所以,最近打算,重新阅读一下关于STM32数据手册和一些芯片手册,按照自己的想法,看看自己能不能凭借着自己的能力重新编写那些代码。因为自己购买的STM32的开发板是正点原子的,所以,在学习过后,一般的程序中都带有一点别人的程序的风格。

今天复习的是关于STM32F103的滴答定时器。STM32F103是M3内核,内部自带了一个滴答定时器,而且,这个定时器是被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。这个滴答定时器是24位的倒计数定时器,当计数值为0时,自动将RELOAD寄存器中的重装载值装载为定时初值。

在实现us、ms定时时,我们首先应该选择的是定时器的时钟源。按照系统时钟RCC初始化之后的时钟来设置自己的时钟,不过,我现在使用的是V3.5的版本库,这个版本库将system_Init( ) 函数加入了启动程序中,所以,如果我们在实现定时器的初始化之前不再进行任何时钟设置的情况下,系统默认的时钟是72MHz。

首先是关于滴答定时器的一些寄存器介绍。

这部分的知识可以参考《Cortex-M3权威指南》133的介绍来详细阅读一些寄存器的介绍。

上面图片介绍了我们会使用到的三个寄存器,本来权威指南中介绍的是4个寄存器,最后一个寄存器是校准寄存器,我暂时是没有使用到,所以也就没有深入的研究。

在这里,我们选择外部时钟作为滴答定时器的心脏,然后设置定时器的时钟为外部时钟的8分频,即9MHz。然后就是使能定时器,装载定时值,等待定时器结束,然后关闭定时器,清空计数器计数值。总的流程就是上面介绍的步骤。

接下来,参考正点原子的函数,进行了编程。其实,仔细想想,别人的代码真的是很优秀了,一行也不能缺少,一行也不多。

0 0
原创粉丝点击