pulseIn函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。返回脉冲持续的时间长短, 单位为ms。如果超时还没有读到的话, 将返回0。

pulseIn函数返回值类型为无符号长整型(unsigned long),3个参数分别表示脉冲输入的引脚、脉冲响应的状态(高脉冲或低脉冲)和超时时间。函数原型在wiring_pulse.c中,如下:

unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
{     
      uint8_t bit = digitalPinToBitMask(pin);
      uint8_t port = digitalPinToPort(pin);
      uint8_t stateMask = (state ? bit : 0);
      unsigned long width = 0;
      // keep initialization out of time critical area
     
      unsigned long numloops = 0;
      unsigned long maxloops = microsecondsToClockCycles(timeout) / 16;
     
      // wait for any previous pulse to end
      while ((*portInputRegister(port) & bit) == stateMask)
                if (numloops++ == maxloops)
                return 0;
      // wait for the pulse to start
      while ((*portInputRegister(port) & bit) != stateMask)
                if (numloops++ == maxloops)
                return 0;
      // wait for the pulse to stop
      while ((*portInputRegister(port) & bit) == stateMask)
                width++;
     
      return clockCyclesToMicroseconds(width * 10 + 16);
}

可以在开发环境的下列实例程序中找到pulseIn函数的应用:

Memsic2125.pde、Ping.pde

最新文章

  1. 更新过程 renewal process
  2. jQuery的选择器中的通配符使用介绍
  3. 使用C#的反射机制读取类的字段名称及值
  4. ASP.NET Cookie存值问题
  5. MYSQL注入天书之HTTP头部介绍
  6. C堆栈
  7. hdu1150
  8. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
  9. SKTextureAtlas类
  10. 工作日志(DJ)
  11. phoenix常用命令
  12. Redis 2种持久化模式的缺陷
  13. ES6 new syntax of Arrow Function
  14. Delphi中Inputbox 和Inputquery 函数的使用
  15. MySQL5.7基于binary log的主从复制
  16. 【原创 Hadoop&Spark 动手实践 4】Hadoop2.7.3 YARN原理与动手实践
  17. linux 配置vue环境
  18. centos docker安装和使用
  19. 【转】escape()、encodeURI()、encodeURIComponent()区别详解
  20. div配景图片全div显示

热门文章

  1. Swagger .Net配置
  2. 转来的emacs配置文件,自动安装插件
  3. 规则引擎集成接口(八)Java接口实例
  4. VMware/Microsoft官网查询参加的培训及认证信息
  5. 初学android之简易的网易页面
  6. ACM知识点
  7. Thinkphp源码分析系列(九)–视图view类
  8. java io 流分类表
  9. 转 LoadRunner 技巧之 IP欺骗 (推荐)
  10. tp框架总结(三)