zoukankan      html  css  js  c++  java
  • Arduino的外部中断

    Arduino的中断函数格式为attachInterrupt(interrput,function,mode)。

    attachInterrupt函数用于设置外部中断,有3个参数,interrput表示中断源编号(中断号)、function表示中断处理函数,mode表示触发模式,它们的具体含义如下

    中断号:可选0或者1,在UNO板上分别对应2和3号数字引脚。在不同的Arduino型号上位置也不同,只有外部中断发生在以下端口,Arduino才能捕获到。以下是常见的几种型号板子的外部中断编号和对应引脚标号。

    中断源编号

    int.0

    int.1

    int.2

    int.3

    int.4

    int.5

    UNOEthernet

    2

    3

     

     

     

     

    Mega2560

    2

    3

    21

    20

    19

    18

    Leonardo

    3

    2

    0

    1

     

     

    Due

     所有IO口均可

    Due板的每个IO均可以进行外部中断,中断号即所使用的中断引脚编号。

    中断处理函数:指定中断的处理函数,是一段子程序,当中断发生时执行该子程序,其中参数值为函数的指针。

    触发模式:有下列几种类型

    LOW                  低电平触发
    CHANGE            电平变化,高电平变低电平、低电平变高电平
    RISING              上升沿触发
    FALLING            下降沿触发
    HIGH                 高电平触发(该中断模式仅适用于Arduino due)

    如果不需要使用外部中断了,可以用中断分离函数detachInterrupt(interrupt )来取消这一中断设置。

    Example Code   用外部中断实现LED的亮灭切换

     1 const byte ledPin = 13;  //LED的引脚
     2 const byte interruptPin = 2;  //中断源引脚,根据所用板子查表得到中断编号interrupt
     3 volatile byte state = LOW;  
     4 
     5 void setup()
     6 {
     7   pinMode(ledPin, OUTPUT);
     8   pinMode(interruptPin, INPUT_PULLUP);
     9   attachInterrupt(interrupt, blink, CHANGE);
    10 }
    11 
    12 void loop()
    13 {
    14   digitalWrite(ledPin, state);
    15 }
    16 
    17 void blink()
    18 {
    19   state = !state;
    20 }

      

     

  • 相关阅读:
    使用 RestSharp 调用 WebAPI 接口
    Android Studio 下载安装目录
    多线程之await/async
    ScriptX进行Web打印
    Sqlserver 查询最新修改过的表、过程和视图等
    SqlServer中的bit类型
    .Net 6
    PDA 使用总结
    SQL Server 发布订阅 发布类型详解
    Profile对象
  • 原文地址:https://www.cnblogs.com/MyAutomation/p/9376290.html
Copyright © 2011-2022 走看看