attachInTerrupt()

有这个专业词要知道:

Digital Pins:电子引脚

ISRs(Interrupt Service Routines):中断服务程序

ISR(Interrupt Service Routine):中断服务程序

attachInTerrupt()第一个参数为中断的引脚号,一般使用digitalPinToInterrupt(pin)去设置。比如如果使用中断引脚3,首先使用digitalPinToInterrupt(3),然后将其传入attachInterrupt()

下面是各个板子对应的引脚号:

需要注意的地方:

在中断函数里面delay()函数是不会工作的,millis()返回值不会增加,串口接收的数据可能会丢失,如果在中断函数中要修改全局变量,需要把全局变量声明中添加volatile关键字。

使用中断的目的,就是为了更好的写程序。这样程序就不要用轮询,不停的问,而是中断一来就停止手上的工作,从而直接进行中断函数的响应。

关于中断服务程序(About Interrupt Service Routines)

ISR我个人觉得更正确的翻译为中断服务函数。ISR比较特殊,不能有参数和返回值,也不返回任何数据。

这里有几点要注意的:

如果同时有多个ISR被触发,只有一个ISP会被响应,这依赖于他们的优先级。delay()和millis()是不能用的,millis()他依赖于中断计时器(这里就和写C/C++的时候统计程序运行时间,在运行时间里面调用windows.h中的sleep,这个调用后连统计时间的函数都会被sleep掉)micros在前1-2ms是正常的,之后就不正常了。官方推荐在中断函数中使用delayMicroseconds()这个函数。

在ISR中一般使用全局变量进行操作,在全局变量中要添加volatile关键字。

这些函数都是异步的操作:

关于参数:

下面是官方给出的示例代码:

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;void setup() {pinMode(ledPin, OUTPUT);pinMode(interruptPin, INPUT_PULLUP);attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}void loop() {digitalWrite(ledPin, state);
}void blink() {state = !state;
}

Arduino文档阅读笔记-attachInterrupt()相关推荐

  1. Arduino文档阅读笔记-WeMos D1 ESP8266 WIFI开发板入门

    WeMos D1开发板以ESP8266WIFI开发板为基础,使用Arduino开发板的设计,工作电压为3.3V设计出来的开发板,这个开发板仅仅是使用了Arduino uno的布局设计,并不是Ardui ...

  2. Arduino文档阅读笔记-4 WHEEL ROBOT CAR BASIC EXAMPLE

    Arduino小车有很多种,包括2个轮子,4个轮子.都有. 下面这个实例来做一个最基础的4轮小车,下面将说明各个功能和代码. 首先得先准备这样的一辆4个轮子的小车. 再选这样的一个扩展板: 电机控制板 ...

  3. Arduino文档阅读笔记-RFID工作原理及RC522模块介绍

    RFID工作原理 RFID(Radio Frequency Identification):无线射频识别 RFID由2个部分组成:应答器/标签被贴在某个物体上的东东.无线接收器用于读取应答器/标签上的 ...

  4. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  5. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  6. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  7. FreeRTOS官方指导文档阅读笔记

    FreeRTOS官方指导文档阅读笔记 基于 161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf,可 ...

  8. Blockly学习之文档阅读笔记

    文档阅读来源--谷歌官网介绍: https://developers.google.com/blockly/guides/overview 概述 一个用于Web.Android.iOS的可视化代码编辑 ...

  9. Leaflet文档阅读笔记-Quick Start Guide笔记

    目录 网络加载JS和CSS 初始化地图 在地图上做标记 在地图上点击事件获得坐标 个人对这篇文档的体会 网络加载JS和CSS 先要加载css,然后在加载js <link rel="st ...

最新文章

  1. latex中\begin{verbatim}以及\verb有什么用?
  2. php中的构造函数和析构函数,php 中构造函数和析构函数
  3. Protobuf 的 proto3 与 proto2 的区别
  4. 利用jquery的imgAreaSelect插件实现图片裁剪示例
  5. 连接pgsql_Laravel 数据库连接配置和读写分离
  6. ring0和ring3的区别
  7. 问题处理:qt.qpa.plugin: Could not find the Qt platform plugin “cocoa“ in ““
  8. 我的linux 常用命令
  9. 阿里云 ssh 登陆请使用(公)ip
  10. centos7 docker端口_使用Docker部署Python应用
  11. python处理文本_Python处理文本文件中控制字符的方法
  12. linux内核镜像的分层,Docker 入门教程:镜像分层
  13. 华为四核处理器K3V2
  14. (转)番茄时间管理法(Pomodoro Technique)
  15. SQL 的各种 join 用法
  16. 仿牛客论坛项目(下)
  17. 使用STC8A8K64S4A12单片机实现的“基于脉冲宽度调制(PWM)技术的智能温度控制器”
  18. PVT的spatial reduction attention(SRA)
  19. 《炬丰科技-半导体工艺》硅片湿法清洗槽中兆声波下的水和气泡运动
  20. 分享溜客2011年5月16日被检测过程

热门文章

  1. --@angularJS--自定义服务与后台数据交互小实例
  2. JBPM与设计模式之职责链模式
  3. 小记 | 从 0 到 1,看我如何玩弄千万日志于股掌
  4. 乐乐茶签约帆软软件,打造新式茶饮数字化管理新标杆
  5. 老板要做数字化转型,干了3个月的脏活累活,我被开除了
  6. 【CComPtr】CComPtr和CComQIPtr的区别
  7. 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...
  8. 服务器漏洞文件被删除漏洞,【华中科技大学 - 漏洞预警】Wordpress = 4.9.6 任意文件删除漏洞...
  9. bond4 交换机配置_CentOS 网卡配置bond4(LACP)
  10. githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法