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