[MM32生态] MM32 如何使用定时器做脉冲计数

[复制链接]
2058|5
 楼主| laocuo1142 发表于 2021-4-12 16:44 | 显示全部楼层 |阅读模式
一、应用简介
在实际应用的一些产品上可能需要到对脉冲的个数进行计数,本章我们来讲一下如何使用tiM来做一个脉冲计数的功能。在MM32 TIM中正好有一个外部时钟模式1可以来帮助我们实现这个功能。
二、外部时钟源模式1描述
首先我们来了解一下外部时钟源模式1,当 TIMx_SMCR 寄存器的SMS = 111 时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数。下图是TI2外部时钟连接例子。
175149owk6gpaawpzvawp6.png.thumb.jpg
例如,要配置向上计数器在 T12 输入端的上升沿计数,使用下列步骤:
1. 配置 TIMx_CCMR1 寄存器 CC2S = 01,配置通道 2 检测 TI2 输入的上升沿。
2. 配置 TIMx_CCMR1 寄存器的 IC2F[3: 0],选择输入滤波器带宽(如果不需要滤波器,保持 IC2F= 0000)。
3. 配置 TIMx_CCER 寄存器的 CC2P = 0,选定上升沿极性。
4. 配置 TIMx_SMCR 寄存器的 SMS = 111,选择定时器外部时钟模式 1。
5. 配置 TIMx_SMCR 寄存器中的 TS = 110,选定 TI2 作为触发输入源。
6. 设置 TIMx_CR1 寄存器的 CEN = 1,启动计数器。
注:捕获预分频器不用作触发,所以不需要对它进行配置。
当上升沿出现在 TI2,计数器计数一次,且 TIF 标志被设置。
在 TI2 的上升沿和计数器实际时钟之间的延时取决于TI2 输入端的重新同步电路
外部时钟模式1下的控制电路
175150xfzm4yntntt6e6rn.png.thumb.jpg
三、定时器代码配置
    175150agz4ff9f48z76zt9.png.thumb.jpg
四、实验结果
实验信号发生器从PA1输入1HZ的方波,进入KEIL的调试模式观察TIM->CNT的变化,TIM的计数器以每秒加1的速度向上计数,停止输入方波,计数器停止计数。说明我们实现了使用TIM进行计数的功能






yangjiaxu 发表于 2021-5-23 18:07 | 显示全部楼层
讲的很不错 支持一波
734774645 发表于 2021-5-27 15:50 | 显示全部楼层
定时器一般具备计数模式,可以用这个模式进行计数测量脉冲数量。
自动化陈稳 发表于 2021-5-29 19:11 | 显示全部楼层
实现了使用TIM进行计数的功能
skyred 发表于 2021-6-16 13:10 | 显示全部楼层
不是所有的定时器都能计数的么?
呐咯密密 发表于 2021-6-16 13:17 | 显示全部楼层
要加一个溢出中断,在达到计数的数量后可以进行一些操作,只计数没啥用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1296

主题

6239

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部