版主,请教一个问题。我用的是STM8S103K3的片子,由于是第一次使用ST单片机,所以很多的地方不明白。我现在用TIM2 的第三通道来捕获一个脉冲信号,并要把脉冲宽度读出来。我按着数据手册上一步一步的做,结果还是没有出来,能在进入捕获中断,但是就读不出TIM2_CCR3的值,每次读的是O.其配置方法如下:
1.
选择有效输入端:例如TIM1_CCR1连接到TI1输入,所以写入TIM1_CCR1寄存器中的CC1S=01,此时通道被配置为输入,并且TIM1_CCR1寄存器变为只读。
2.
根据输入信号TIi的特点,可通过配置TIM1_CCMRi寄存器中的ICiF位来设置相应的输入滤波器的滤波时间。假设输入信号在最多5个时钟周期的时间内抖动,我们须配置滤波器的带宽长于5个时钟周期;因此我们可以连续采样8次,以确认在TI1上一次真实的边沿变换,即在TIMi_CCMR1寄存器中写入IC1F=0011,此时,只有连续采样到8个相同的TI1信号,信号才为有效(采样频率为fMASTER)。
3.
选择TI1通道的有效转换边沿,在TIM1_CCER1寄存器中写入CC1P=0(上升沿)。
4.
配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止(写TIM1_CCMR1寄存器的IC1PS=00)。
5.
设置TIM1_CCER1寄存器的CC1E=1,允许捕获计数器的值到捕获寄存器中。
6.
如果需要,通过设置TIM1_IER寄存器中的CC1IE位允许相关中断请求。
当发生一个输入捕获时:
●
当产生有效的电平转换时,计数器的值被传送到TIM1_CCR1寄存器。
●
CC1IF标志被设置(中断标志)。当发生至少2个连续的捕获时,而CC1IF未曾被清除时,CC1OF也被置1。
●
如设置了CC1IE位,则会产生一个中断。 |