最近做项目,用到守时器,干脆重新学习一下,曾经仅仅用于简略的pwm生成和中止处理,对守时器根本就没有进行深入研讨,今日借此机会,重新学习一下高档守时器,只需高档守时器学会了,根本守时器也就没什么问题了。总体上来说,stm32的守时器,功用十分多。看了一下,大约有20个功用。我就依照数据手册,逐个的重新学习一下。
首先是框图,娘的,看着就眼晕
1、时基:包括计数器寄存器(TIMx_CNT) 预分频器寄存器 (TIMx_PSC) 主动装载寄存器 (TIMx_ARR) 重复次数寄存器 (TIMx_RCR)
计数相似于51单片机中的TH1和TL1。预分频器便是将输入时钟进行下降。重复寄存器相似与51中的主动装载形式中的TH寄存器。最终一个寄存器与发生更新时刻UEV与影子寄存器有关。UEV时刻更新,关于预分频寄存器来说,他能够当作两个寄存器,一个叫可读写的,一个叫缓冲的,预分频是依据缓冲为规范的,设置的时分,将数据写入可读写,然后等候UEV时刻的到来,在将可读写的写入缓冲来更新。这便是UEV的效果。影子寄存器首要是避免多通道时序过错的问题。
有爱好的能够看一下http://blog.163.com/liuyunqian@yeah/blog/static/70395843201043094819579/
2、计数器形式:向上,向下,上下计数
向上计数从0开端,到TIMx_APR,发生溢出,溢出时发生UEV,然后更新影子寄存器。若设置了TIMx_RCR,则到TIMx_RCR时即发生UEV。不然只能到溢出时发生UEV。
向下计数从TIMx_APR递减到0,发生溢出,关于UEV和上面相似
中心对齐形式:从0递增到TIMx_APR-1,发生溢出,然后在递减到0,发生下溢。有1、2、3,三种形式,其间2、3和UIF有关
3、重复计数器:发生UEV。对PWM和输入捕获很有用途。
4、时钟源:1、内部时钟。
2、外部时钟形式1:外部输入引脚 外部时钟形式2:外部触发输入ETR
3、内部触发输入(ITRx):运用一个守时器作为另一个守时器的预分频器。如能够装备一个守时器Timer1而作为另一个守时器Timer2的预分频器。
5、捕获比较通道:首要多用于计频和pwm输出。t1和t8高档守时器通道中含有死区操控,运用时可设置。
关于时刻丈量:一个办法是测频率,另一个是测周期,测频率在限制的时刻内(如1秒钟)检测脉冲的个数,测周期测验限制的脉冲个数之间的时刻。
考虑的问题:
(1)、体系时钟:频率与精度,(2)、计数器位数,一般为16位,能够发生的限制时刻越长,或在限制时刻里记载的脉冲个数越多。(3)、被测频率的规模,低频检测两个脉冲时刻,高频在必守时刻内检测脉冲个数。(4)、中止响应与软件算法。
6、输入捕获形式:(1)装备TIMx的CCRx为输入形式,即TIMx->CCMRx的0和1位为 “0x01” “0x02″ 或”0x03″。(2)装备输入滤波器,即TIMx->CCMRx的4-7位或15-12位。(3)装备通道的有用转化边缘,即TIMx->CCER的”1″,”5″,”9″,”13″位,0为上升沿,1为下降沿。(4)装备预分频器,TIMx->CCMRx的第2-3位或第11-10位。(5)设置TIMx->CCER的”0″,”4″,”8”,”12″位(6)设置TIMx->DIER的中止答应位。
关于输入捕获,应该是在中止中进行处理。 能够核算凹凸电平的时刻,一同也能够针对红外解码进行编程装备。
当检测到捕获后进入中止开端处理。也可进入dma,或读取CCRx。
7,PWM输入:关于PWM输入,首要是测频率与测占空比。装备时,把1个引脚触发映射到两个CCRx中去,一同,将两个CCR装备成为边缘极性相反输入,这样的话,能够一个用来计频率,另一用来计占空比。当频率边缘跳变时,记载周期与占空比后,计数器清零,然后核算详细数据。
8,强置输出形式:经过设置CCMR寄存器,能够使OCxREF强制为高或低一种状况。且计数器和比较器仍在作业,并发生中止或DMA。
9,输出比较形式
图片
10,PWM形式:TIMx_ARR决议周期周期,CCRx决议占空比。cnt计数到CCRx时,跳变电平。4路的占空比,能够独立设置。
11,单脉冲形式:从形式发动,在 输出比较 或许 PWM 下发生波形。
12,在外部事情时铲除OCxREF信号,外加比较器,可用于操控电流。例|:外部触发预分频器有必要处于封闭,有必要制止外部时钟形式2:TIMx_SMCR寄存器中的ECE=’0’。外部触发极性(ETP)和外部触发滤波器(ETF)能够依据需要装备。
13,编码器接口形式:用于编码器的脉冲和相位丈量,在榜首通道和第二通道中设置。关于编码器而言,有A、B两相相差90度,可经过比较A相在前仍是B相在前,以判别编码器的正转与回转,经过零位脉冲,可取得编码器的零位参阅位。而且能够丈量两个编码器事情的距离,取得动态的信息(速度,加速度,减速度)等。
咱们假定装备如下: ● CC1S=’01’ (TIMx_CCMR1寄存器,IC1FP1映射到TI1) ● CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2) ● CC1P=’0’ (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1) ● CC2P=’0’ (TIMx_CCER寄存器,IC2FP2不反相,%&&&&&%2FP2=TI2) ● SMS=’011’ (TIMx_SMCR寄存器,一切的输入均在上升沿和下降沿有用). ● CEN=’1’ (TIMx_CR1寄存器,计数器使能)
14,守时器输入异或功用:TIMx_CR2寄存器中的TI1S位,答应通道1的输入滤波器衔接到一个异或门的输出端,异或门的3个输入端为TIMx_CH1、TIMx_CH2和TIMx_CH3。 13.3.18异或输出能够被用于一切守时器的输入功用,如触发或输入捕获。下节给出了此特性用于衔接霍尔传感器的比如。
15,霍尔传感器:守时器输入异或的运用,用于电机的测速。他能够映射到通用守时器,T2-T5,用T1或T8来操控电机。
16,TIMx守时器和外部触发的同步:TIMx守时器能够在多种形式下和一个外部的触发同步:复位形式、门控形式和触发形式。
复位形式:能在外部触发时,使计数器复位。
门控形式:依照选中的输入端电平使能计数器。
触发形式:输入端上选中的事情使能计数器
外部时钟形式2能够与另一种从形式(外部时钟形式1和编码器形式在外)一同运用。这时,ETR信号被用作外部时钟的输入,在复位形式、门控形式或触发形式能够挑选另一个输入作为触发输入。不主张运用TIMx_SMCR寄存器的TS位挑选ETR作为TRGI。
17:守时器同步,使一个守时器作为另一个守时器的预分频器。运用一个守时器使能另一个守时器(如:守时器2的使能由守时器1的输出比较操控)运用一个守时器去发动另一个守时器。运用一个外部触发同步地发动2个守时器。
18:调试形式,详细就不去评论了。
总体上来说,STM32的守时器功用十分多,也十分复杂,加入了电机操控的一些功用。开始的大约也就这意思。至于怎么运用,还要在项目中细细研讨。