MM32 如何使用定时器做脉冲计数
一、应用简介在实际应用的一些产品上可能需要到对脉冲的个数进行计数,本章我们来讲一下如何使用tiM来做一个脉冲计数的功能。在MM32 TIM中正好有一个外部时钟模式1可以来帮助我们实现这个功能。二、外部时钟源模式1描述首先我们来了解一下外部时钟源模式1,当 TIMx_SMCR 寄存器的SMS = 111 时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数。下图是TI2外部时钟连接例子。例如,要配置向上计数器在 T12 输入端的上升沿计数,使用下列步骤:1. 配置 TIMx_CCMR1 寄存器 CC2S = 01,配置通道 2 检测 TI2 输入的上升沿。2. 配置 TIMx_CCMR1 寄存器的 IC2F,选择输入滤波器带宽(如果不需要滤波器,保持 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进行计数的功能
讲的很不错 支持一波 定时器一般具备计数模式,可以用这个模式进行计数测量脉冲数量。 实现了使用TIM进行计数的功能 不是所有的定时器都能计数的么? 要加一个溢出中断,在达到计数的数量后可以进行一些操作,只计数没啥用
页:
[1]