• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机如何让接受几个脉冲并计算某个脉冲宽度

liuxiaofei126 2019-04-27 浏览量:1001
单片机如何让接受几个脉冲并计算某个脉冲宽度
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 两种方法,如果脉冲间隔比较长,且间隔不定的,可以用IO中断,IO在一个边沿中断,并使能定时器定时,然后另一个边沿中断停止定时器,然后读出定时器的值,这种要配置上下边沿都触发中断

    如果脉冲间隔固定且间隔较短的可以用PWM捕获功能,这个是定时器自带的功能

其他答案 数量:5
  • 接入普通IO,开启上升或下降触发中断,同时就开启计时器,这样应该可以吧。


  • 用铺铜IO口检测,使用循环,一直查询该脚是否变成高电平。如果是,就启动定时器开始计时。然后继续查询,该脚是否变成低电平,若是,则停止定时器计时,然后读出计时值即可计算脉冲宽度

  • GPIO口可以开启高低电平或上升沿、下降沿触发中断。同时配置定时器,准备计数。

    通过将多个脉冲信号接入多个GPIO口,当触发中断时,开始计数;当GPIO口再次触发电平转换中断,则停止计数,将计数值取出来看一下,就知道脉宽了。

  • 上面的人都说了单个脉冲计数(测宽的方法),我这里补充一下一些注意事项:

    1. 要保证脉冲电压能触发中断、或者说本被GPIO检出

    2. 要保证脉冲宽度能被计数,则包括两种情况,一种是脉冲宽度不能太小(比如小于计数间隔就不能分辨啦),也不能太大(比如太长啦,超出计数器计数范围就会溢出而不能分辨)

    3. 因为你要对多个脉冲进行测试,来看某个脉冲的宽度,这里还需要用到数组进行值的存储,对每个脉冲对应测宽值都存入数组,然后来看某个的,如果多个脉冲是连续发出的,通过手动控制几乎不可能刚好测到你想测的,只能全部测来分析。

  • 用外部中断双边沿触发就可以了,在中断里面记录每段脉冲高低电平时间,然后读取时间,你这个有点类似红外遥控解码原理,可以参考红外遥控解码例程

相关问题

问题达人换一批

单片机如何让接受几个脉冲并计算某个脉冲宽度