您的位置 首页 国产IC

STM32 学习笔记_TIME定时器详解1

STM32单片机的定时器的确很强大,参考说明书中就占了一百多页,占参考手册14有多了。STM32的定时器分了好几个类别,各个类别针对功能

STM32 单片机的守时器确实很强壮,参阅说明书中就占了一百多页,占参阅手册1/4 有多了。
STM32的守时器分了好几个类别,各个类别针对功用效果都不大相同。
分有: 一、高档守时器
二、通用守时器
三、根本守时器
四、看门狗守时器
五、SysTick守时器

其间看门狗守时器和SysTick守时器本篇笔记论述,这儿首要记下对平常运用守时器效果的计时计数器的一些自己的了解。
依照参阅手册中的界说 高档守时器 通用守时器根本守时器,这三个守时器成上下级的联系,即根本守时器有的功用通用守时器都有,并且还增加了向下、向上/向下计数器、PWM生成、输出比较、输入捕获等等功用;而高档守时器又包含了通用守时器的一切功用,别的还增加了死区互补输出、刹车信号、参加重复计数器等等。(这儿等等功用请参阅《STM32参阅手册》)
所以学习STM32 守时器实践便是学习一下高档守时器,然后恰当的删减后便是后边的两种守时器了。
假若不触及输出输入,守时器的最根本用法便是计数守时效果了本篇笔记首要针对这部分的了解所写下的。

高档守时器中总共有20个寄存器:

TIMx_CR1、TIMx_CR2、TIMx_SMCR、TIMx_DIER、TIMx_SR、TIMx_EGR、TIMx_CCMR1、TIMx_CCMR2、
TIMx_CCER、TIMx_CNT、TIMx_PSC、TIMx_ARR、TIMx_RCR、TIMx_CCR1、TIMx_CCR2、TIMx_CCR3、
TIMx_CCR4、TIMx_BDTR、TIMx_DCR、TIMx_DMAR
好吧一堆寄存器光看都看到目不暇接了,当然不是一切寄存器都触及到才能让守时器作业的,例如最根本的守时功用所触及的只需几个与时基功用相关的寄存器,TIMx_CNT(计数器寄存器)、TIMx_PSC(预分频器寄存器)、TIMx_ARR(主动装载寄存器)、TIMx_RCR(重复次数寄存器)。参阅手册中有那么衣服守时器的框图。这几个寄存器的联系如图所示的:

st.jpg(24.62 KB)

2012-7-22 22:23

CK_PSC这根时钟线上的时钟源的挑选,即给守时器计数计时的时钟源的输入方法,有四种方法,分别是内部时钟,外部时钟形式1,外部时钟形式2,内部触发。这部分日后再说,这儿暂时运用最常用的内部时钟方法,既是当内部时钟为72MHz 的内部时钟源。
如图所示的,时钟源首要进入预分频器,然后再进入预先装入主动重装载寄存器的计数器中,当计数器溢出时发生一次中止和一次事情更新。除了多了一个PSC,其他的根本和51单片机很类似,初度看参阅手册中的功用描绘中呈现了好屡次“更新事情(UEV)”。这究竟是怎样的相同东西呢?在这儿有个新概念叫“影子寄存器”,在上图中,能够看到PSC、ARR、REP(重复计数器中的低八位)这三个寄存器框框下都有个黑影,每次这三个寄存器便是影子寄存器,假如看到参阅手册全图中还能够看到别的还有几个框框下也有暗影部分的,这几个寄存器也是影子寄存器。何谓影子寄存器呢,例如PSC寄存器能够了解为有两个,一个是用户能够拜访到的寄存器,可读可写,另一部分便是客户拜访不到的但其装载值和实践寄存器是亲近相关的,当程序在运转中改写PSC 这时分影子寄存器的效果就表现了,由于马上写入的值或许会大于或小于现在正在运转的寄存器中的数值,而实在在运转时分的正是这个影子寄存器中的值,而程序写入的是可拜访的寄存器,只需当发生一个更新事情的时分影子寄存器才会读入拜访寄存器中的值,这样就能够避免忽然修正而发生的非正常中止或不会中止等反常问题。当然在操控器CR1中操控这个影子寄存器是否起效果,不起效果的话便是当即写入这个数值到寄存器中。下面两幅是参阅手册中的相关时序图:

1.jpg(76.1 KB)

2012-7-22 22:23

2.jpg(80.17 KB)

2012-7-22 22:23

回头再说一下“更新事情(UEV)” ,当计数器溢出的时分发生一次UEV事情,别的还能够在事情寄存器TMx_EGR中的UG位软件写入发生一次事情更新,当UEV事情降临的时分一切影子寄存器均载入寄存器中的值,然后完成一切带影子寄存器的更新,而不启用影子寄存器的状况下只能完成,写那个寄存器更新那个寄存器而,这或许形成相相关的寄存器发生抵触对立,主张仍是敞开此功用,鄙人一个溢出周期后发生事情更新。

(已然说到了影子寄存器也说点自己的猜想,了解了点STM32单片机的都知道简直一切寄存器都是32位的,唯一TIM寄存器是16位的,是的假如是32位的计数器咱们或许还能做更广大的守时效果。但咱们也仍是发现即便参加了影子寄存器而全体的寄存器地址仍然坚持是接连的,这我猜想一种或许性寄存器自身其实仍是32位的,但高位供给了影子寄存器的载入功用,所以仍然能坚持地址接连性,只需设定了高位制止拜访即可。官方材料和查找中均未有任何承认说法,朴实自己猜想未得到官方任何证明)

别的高档守时器中还有RCR重复次数寄存器这个,也是比较简单的事情更新(UEV) 都是在RCR为0的状况下发生计数器溢出而发生的,当RCR中不为0的时分计数器溢出只会使得重复次数寄存器递减而不会发生UEV,这样就能够使得守时器的守时状况得以延伸,而相当于有16位的分频器,16位的计数器,再参加16位的重复次数,总共48位的计数守时器。详细看参阅手册,这个很好了解。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/258399.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部