简体中文
  • 关于 uKit Explore
  • uKit Explore快速上手
    • 如何获取SDK
    • uKit Explore 引脚图
    • 灰度传感器介绍及答疑
    • 灰度传感器记录指引
    • 灰度传感器固件更新
  • uKit Explore 函数库
    • uKit Explore 库文件介绍
    • 传感器
      • 眼灯
        • setEyelightAllPetals(id,red,green,blue)
        • setEyelightPetals(id,petalsnum,petals)
        • setEyelightLook(id,face,times,red,green,blue)
        • setEyelightLookUntil(id,face,times,red,green,blue)
        • setEyelightScene(id,scene,times);
        • setEyelightSceneUntil(id,scene,times)
        • setEyelightOff(id)
      • 超声波传感器
        • setUltrasonicRgbled(id,red,green,blue)
        • setUltrasonicRgbledOff(id)
        • readUltrasonicDistance(id)
      • 红外传感器
        • readInfraredDistance(id)
      • 按压传感器
        • readButtonValue(id)
      • 亮度传感器
        • readLightValue(id)
      • 声音传感器
        • readSoundValue(id)
      • 温湿度传感器
        • readHumitureValue(id,choice)
      • 颜色传感器
        • readColorRgb(id)
        • readColor(id,color)
    • 舵机
      • setServoTurn(id,dir, speed)
      • setServoAngle(id,angle,times)
      • readServoAngleNPD(id)
      • readServoAnglePD(id)
    • 电机
      • setMotorTurnAdj(id, speed,time)
      • setMotorTurn(id,pwmDuty)
      • setMotorStop(id)
      • readMotorSpeed(id)
    • 板载硬件
      • 按键
        • button1.Update();
        • button1.clicks()
      • 蜂鸣器
        • noTone(pin)
        • tone(frequency, duration)
      • setRgbledColor(red,green,blue)
      • readBatteryVoltage()
      • 陀螺仪
        • IMU::init()
        • IMU::read()
        • IMU::getRawAccelX()
        • IMU::getRawAccelY()
        • IMU::getRawAccelZ()
        • IMU::getRawGyroX()
        • IMU::getRawGyroY()
        • IMU::getRawGyroZ()
        • IMU::getRoll()
        • IMU::getPitch()
  • Arduino 函数库
    • 结构部分
      • 主函数
        • setup()
        • loop()
      • 结构控制
        • if
        • if...else
        • for
        • switch...case
        • while
        • do...while
        • break
        • continue
        • return
        • goto
      • 扩展语法
        • ;
        • {}
        • //
        • /* */
        • #define
        • #include
      • 字符
        • isAlphaNumeric(thisChar)
        • isAlpha(thisChar)
        • isAscii(thisChar)
        • isWhitespace(thisChar)
        • isControl(thisChar)
        • isDigit(thisChar)
        • isGraph(thisChar)
        • isLowerCase(thisChar)
        • isUpperCase(thisChar)
        • isHexadecimalDigit(thisChar)
    • 函数部分
      • 模拟I/O
        • analogWrite(pin,value)
        • analogRead(pin)
      • 数字I/O
        • digitalWrite(pin, value)
        • digitalRead(pin)
        • digitalToggle(pin)
        • pinMode(pin, mode)
      • 高级I/O
        • pulseIn(pin, value, timeout)
        • shiftIn(dataPin,clockPin,bitOrder)
        • shiftOut(dataPin, clockPin, bitOrder, value)
      • 时间
        • millis()
        • micros()
        • delay(ms)
        • delayMicroseconds(us)
      • 随机数
        • randomSeed(seed)
        • random(min, max)
      • 位操作
        • lowByte(x)
        • highByte(x)
        • bitRead(x,n)
        • bitWrite(x,n,b)
        • bitSet(x,n)
        • bitClear(x,n)
        • bit(n)
      • 外部中断
        • attachInterrupt(interrupt, function, mode)
        • detachInterrupt(interrupt)
      • 中断函数
        • interrupts()
        • noInterrupts()
      • 通讯
        • Serial.available()
        • Serial.begin(speed)
        • Serial.end()
        • Serial.find(target)
        • Serial.findUntil(target, terminal)
        • Serial.flush()
        • Serial.parseFloat()
        • Serial.parseInt()
        • Serial.peek()
        • Serial.print(val,format)
        • Serial.println(val,format)
        • serial.read()
        • Serial.readBytes(buffer, length)
        • Serial.readBytesUntil(character, buffer, length)
        • Serial.setTimeout(time)
        • Serial.write()
        • serialEvent
由 GitBook 提供支持
在本页
  • 参数
  • 注意事项
  • 使用中断
  • 程序示例

这有帮助吗?

  1. Arduino 函数库
  2. 函数部分
  3. 外部中断

attachInterrupt(interrupt, function, mode)

当发生外部中断时,调用一个指定函数。

参数

参数名

描述

interrupt

中断引脚数

function

中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。

mode

定义何时发生中断以下四个contstants预定有效值:

  • LOW 当引脚为低电平时,触发中断

  • CHANGE 当引脚电平发生改变时,触发中断

  • RISING 当引脚由低电平变为高电平时,触发中断

  • FALLING 当引脚由高电平变为低电平时,触发中断.

注意事项

当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。

使用中断

在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。一个使用中断的任务可能会读一个旋转编码器,监视用户的输入。

如果你想以确保程序始终抓住一个旋转编码器的脉冲,从来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手,因为该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。在所有这些情况下,使用一个中断可以释放的微控制器来完成其他一些工作。

程序示例

int pin = 13;
volatile int state = LOW;
 
void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}
 
void loop()
{
  digitalWrite(pin, state);
}
 
void blink()
{
  state = !state;
}

上一页外部中断下一页detachInterrupt(interrupt)

最后更新于5年前

这有帮助吗?