两种方法,如果脉冲间隔比较长,且间隔不定的,可以用IO中断,IO在一个边沿中断,并使能定时器定时,然后另一个边沿中断停止定时器,然后读出定时器的值,这种要配置上下边沿都触发中断
如果脉冲间隔固定且间隔较短的可以用PWM捕获功能,这个是定时器自带的功能
接入普通IO,开启上升或下降触发中断,同时就开启计时器,这样应该可以吧。
GPIO口可以开启高低电平或上升沿、下降沿触发中断。同时配置定时器,准备计数。
通过将多个脉冲信号接入多个GPIO口,当触发中断时,开始计数;当GPIO口再次触发电平转换中断,则停止计数,将计数值取出来看一下,就知道脉宽了。
上面的人都说了单个脉冲计数(测宽的方法),我这里补充一下一些注意事项:
1. 要保证脉冲电压能触发中断、或者说本被GPIO检出
2. 要保证脉冲宽度能被计数,则包括两种情况,一种是脉冲宽度不能太小(比如小于计数间隔就不能分辨啦),也不能太大(比如太长啦,超出计数器计数范围就会溢出而不能分辨)
3. 因为你要对多个脉冲进行测试,来看某个脉冲的宽度,这里还需要用到数组进行值的存储,对每个脉冲对应测宽值都存入数组,然后来看某个的,如果多个脉冲是连续发出的,通过手动控制几乎不可能刚好测到你想测的,只能全部测来分析。