stm32高级定时器重新学习
首先是框图,娘的,看着就眼晕
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不反相,IC2FP2=TI2) ● SMS=’011’ (TIMx_SMCR寄存器,所有的输入均在上升沿和下降沿有效). ● CEN=’1’ (TIMx_CR1寄存器,计数器使能)
14,定时器输入
stm32定时 相关文章:
- 使用STM32的定时器进行输入脉冲的计数(12-02)
- STM32定时器中断设置方法(12-02)
- STM32 定时器产生PWM彻底应用(12-02)
- 转两个stm32定时器的使用代码(11-30)
- 关于stm32的定时器主从模式概念(11-30)
- STM32 定时器 定时时间的计算(11-28)