如何使用定时器做脉冲计数?

judy的头像
judy 发布于:周二, 03/27/2018 - 10:51 ,关键词:

一、应用简介

在实际应用的一些产品上可能需要使用到对脉冲的个数进行计数,本文小编将给大家介绍如何使用TIM来做一个脉冲计数的功能。在MM32 TIM中正好有一个外部时钟模式1可以来帮助我们实现这个功能。

二、外部时钟源模式1描述

首先我们来了解一下外部时钟源模式1,当 TIMx_SMCR 寄存器的 SMS = 111 时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数。下图是TI2外部时钟连接例子。

如何使用定时器做脉冲计数

例如,要配置向上计数器在 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下的控制电路

如何使用定时器做脉冲计数

三、定时器代码配置

如何使用定时器做脉冲计数

四、实验结果

实验信号发生器从PA1输入1HZ的方波,进入KEIL的调试模式观察TIM->CNT的变化,TIM的计数器以每秒加1的速度向上计数,停止输入方波,计数器停止计数。说明我们实现了使用TIM进行计数的功能

转自:灵动MM32

围观 707