打印
[其他ST产品]

STM32 TImer几种模式

[复制链接]
楼主: 和下土
手机看帖
扫描二维码
随时随地手机跟帖
21
和下土|  楼主 | 2021-3-28 23:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
输出比较模式的配置步骤:

使用特权

评论回复
22
和下土|  楼主 | 2021-3-28 23:36 | 只看该作者
1. 选择计数器时钟(内部,外部,预分频器)

使用特权

评论回复
23
和下土|  楼主 | 2021-3-28 23:37 | 只看该作者
2. 将相应的数据写入TIMx_ARR和TIMx_CCRx寄存器中

使用特权

评论回复
24
和下土|  楼主 | 2021-3-28 23:38 | 只看该作者
3. 如果要产生一个中断请求和/或一个DMA请求,设置CCxIE位和/或CCxDE位。

使用特权

评论回复
25
和下土|  楼主 | 2021-3-28 23:38 | 只看该作者
4. 选择输出模式,例如当计数器CNT与CCRx匹配时翻转OCx的输出引脚,CCRx预装载未用,开启OCx输出且高电平有效,则必须设置OCxM=’011’、OCxPE=’0’、CCxP=’0’和CCxE=’1’。

使用特权

评论回复
26
和下土|  楼主 | 2021-3-28 23:39 | 只看该作者
5. 设置TIMx_CR1寄存器的CEN位启动计数器

使用特权

评论回复
27
和下土|  楼主 | 2021-3-28 23:40 | 只看该作者

使用特权

评论回复
28
和下土|  楼主 | 2021-3-28 23:40 | 只看该作者
PWM 模式

脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。

使用特权

评论回复
29
和下土|  楼主 | 2021-3-28 23:41 | 只看该作者
在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。

使用特权

评论回复
30
和下土|  楼主 | 2021-3-28 23:42 | 只看该作者
下面是一个PWM模式1的例子。当TIMx_CNT<TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为’1’。如果比较值为0,则OCxREF保持为’0’。 下图为TIMx_ARR=8时边沿对齐的PWM波形实例。

使用特权

评论回复
31
和下土|  楼主 | 2021-3-28 23:42 | 只看该作者

使用特权

评论回复
32
和下土|  楼主 | 2021-3-28 23:43 | 只看该作者
单脉冲模式

单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应一个激励,并在一个程序可控的延时之后,产生一个脉宽可程序控制的脉冲。

使用特权

评论回复
33
和下土|  楼主 | 2021-3-28 23:44 | 只看该作者
可以通过从模式控制器启动计数器,在输出比较模式或者PWM模式下产生波形。设置TIMx_CR1寄存器中的OPM位将选择单脉冲模式,这样可以让计数器自动地在产生下一个更新事件UEV时停止。 仅当比较值与计数器的初始值不同时,才能产生一个脉冲。启动之前(当定时器正在等待触发),必须如下配置:

使用特权

评论回复
34
和下土|  楼主 | 2021-3-28 23:44 | 只看该作者
向上计数方式:CNT < CCRx ≤ ARR (特别地,0 < CCRx), 向下计数方式:CNT > CCRx。

使用特权

评论回复
35
和下土|  楼主 | 2021-3-28 23:46 | 只看该作者

使用特权

评论回复
36
和下土|  楼主 | 2021-3-28 23:47 | 只看该作者
编码器接口模式

使用特权

评论回复
37
和下土|  楼主 | 2021-3-28 23:48 | 只看该作者
两个输入TI1和TI2被用来作为增量编码器的接口。参看表77,假定计数器已经启动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有效跳变驱动。TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI1FP1=TI1,TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。

使用特权

评论回复
38
和下土|  楼主 | 2021-3-28 23:48 | 只看该作者
依据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数。在任一输入端(TI1或者TI2)的跳变都会重新计算DIR位。 编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计数)。所以在开始计数之前必须配置TIMx_ARR;同样,捕获器、比较器、预分频器、触发输出特性等仍工作如常。 在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此计数器的内容始终指示着编码器的位置。计数方向与相连的传感器旋转的方向对应。

使用特权

评论回复
39
和下土|  楼主 | 2021-3-28 23:50 | 只看该作者
下表列出了所有可能的组合,假设TI1和TI2不同时变换。

使用特权

评论回复
40
和下土|  楼主 | 2021-3-28 23:51 | 只看该作者
下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个例子中,我们假定配置如下:
● 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寄存器,计数器使能)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则