TIM2是STM8的通用定时器,除了具有TIM4基本定时器具有的定时功能外,还具有PWM输出和捕获功能.
从上图可以看到,当TIM2作为捕获或这PWM输出时,共有两个通道,CH1和CH2.
本例程使用TIM2的捕获功能,来测量CCO的输出频率,根据程序测量到的频率和实际频率对比,来学习TIM2的捕获功能.
程序的编写,主要参考STM8S的中文参考手册.STM8L的这一部分和STM8S相同,所以参考了下这个中文手册,毕竟英文的不是太容易看懂.
测量PWM信号时,实际上只用到了一个引脚,本例程的捕获输入引脚为PB0.但用到了两个测量通道,本例程中通道1检测到PB0为高电平时,将此时计数器的数据写入TIM2_CCR1寄存器.通道2检测到PB0为低电平时,将此时的计数器的数据写入TIM2_CCR2寄存器.
由于捕获模式为复位触发模式,即检测到高电平(本例程设置是高电平)时,数据写入寄存器后,计数器复位,重新从0开始计数,所以通道2检测到低电平时,存入到TIM2_CCR2寄存器中的数据为高电平脉冲时间.
PB0为输入捕获引脚,PC4为CCO输出引脚,所以需要用杜邦线,将PC4连到PB0.同时用逻辑分析仪测量PC4输出的波形,和程序计算值进行对比,从下图可以看到IAR中tmp的值为3.38983039E+1,即程序测量到的频率为3.38983KHz,与逻辑分析测量到的32.7869KHz相似,但误差还是很大,主要原因为是HSI不精确,如果使用HSE,会精确一些,同时提供给定时器的频率不高,增大定时器的频率,结果会接近逻辑分析仪测量值.
|