查看AttachInterrupt()的源代码
←
AttachInterrupt()
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
<font color="orange" size="+1">'''描述'''</font> '''Digital Pins With Interrupts''' attachInterrupt的第一个参数是中断号。 通常,您应该使用digitalPinToInterrupt(引脚)将实际的数字引脚转换为特定的中断号。 例如,如果连接到引脚3,则使用digitalPinToInterrupt(3)作为attachInterrupt的第一个参数。 {|border="1" cellspacing="0" align="center" cellpadding="5" width="700px" |- |align="left"|'''Board''' |align="left"|'''Digital Pins Usable For Interrupts''' |- |align="left"|Uno, Nano, Mini, other 328-based |align="left"|2, 3 |- |align="left"|Mega, Mega2560, MegaADK |align="left"|2, 3, 18, 19, 20, 21 |- |align="left"|Micro, Leonardo, other 32u4-based |align="left"|0, 1, 2, 3, 7 |- |align="left"|Zero |align="left"|all digital pins, except 4 |- |align="left"|MKR1000 Rev.1 |align="left"|0, 1, 4, 5, 6, 7, 8, 9, A1, A2 |- |align="left"|Due |align="left"|all digital pins |- |align="left"|101 |align="left"|all digital pins (Only pins 2, 5, 7, 8, 10, 11, 12, 13 work with CHANGE |} <br> <font color="red" size="">'''注意'''</font>:在附加函数中,delay()将不起作用,并且由millis()返回的值不会递增。 在功能中接收的串行数据可能会丢失。 你应该声明一个变量在未发生中断时储存变量。 有关详细信息,请参阅下面的ISR部分。 <font color="orange" size="+1">'''使用中断'''</font> 中断对于在微控制器程序中自动执行事件非常有用,并且可以帮助解决计时问题。 使用中断的良好任务可能包括读取旋转编码器或监视用户输入。 如果你想确保一个程序总是从旋转编码器捕获脉冲,这样就不会错过脉冲,所以编写一个程序来做任何其他事情会变得非常棘手,因为程序需要不断地轮询传感器 用于编码器的线,以便在发生时捕获脉冲。 其他传感器也具有类似的界面动态,例如尝试读取试图抓住咔嗒声的声音传感器,或者试图抓住硬币丢失的红外线槽传感器(光电断路器)。 在所有这些情况下,使用中断可以释放微控制器以完成其他工作,而不会丢失输入。 <font color="orange" size="+1">'''关于中断服务程序'''</font> ISR是特殊的功能,它们具有大多数其他功能没有的独特的限制。 ISR不能有任何参数,它们不应该返回任何东西。 一般来说,ISR应尽可能短且快。 如果您的草图使用多个ISR,则一次只能运行一次,其他中断将在当前操作完成后依照其所拥有的优先级执行。 millis()依赖于中断计数,所以它不会在ISR内增加。 由于delay()要求中断工作,所以如果在ISR内部调用,它将不起作用。 micros()最初工作,但会在1-2毫秒后开始行为不规律。 delayMicroseconds()不使用任何计数器,因此它将正常工作。 通常,全局变量用于在ISR和主程序之间传递数据。 为了确保ISR和主程序之间共享的变量被正确更新,请将其声明为 ''volatile''。 有关中断的更多信息,请参阅[http://gammon.com.au/interrupts Nick Gammon的笔记]。 <font color="orange" size="+1">'''语法'''</font> <pre style="color:dimgray"> attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); (recommended) attachInterrupt(interrupt, ISR, mode); (not recommended) attachInterrupt(pin, ISR, mode) ; (not recommended Arduino Due, Zero, MKR1000, 101 only) </pre> <font color="orange" size="+1">'''参数'''</font> * interrupt: the number of the interrupt (int) * pin: the pin number (Arduino Due, Zero, MKR1000 only) * ISR: the ISR to call when the interrupt occurs; this function must take no parameters and return nothing. This function is sometimes referred to as an interrupt service routine. * mode: defines when the interrupt should be triggered. Four constants are predefined as valid values: :- LOW to trigger the interrupt whenever the pin is low, :- CHANGE to trigger the interrupt whenever the pin changes value :- RISING to trigger when the pin goes from low to high, :- FALLING for when the pin goes from high to low. :The Due board allows also: :- HIGH to trigger the interrupt whenever the pin is high. <font color="orange" size="+1">'''返回'''</font> <font color="orange" size="+1">'''扩展阅读'''</font> :- [[byte]] ---- [[Arduino语法参考 | 返回Arduino语法参考列表]] 更多建议和问题欢迎反馈至 [http://www.yfrobot.com YFRobot论坛]
返回
AttachInterrupt()
。
导航菜单
个人工具
登录
名字空间
页面
讨论
不转换
变种
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
YF-论坛提问
YFRobot-直营店
YFRobot-企业店
Arduino
Arduino之入门篇
Arduino入门教程
Arduino语法参考
Arduino库
Arduino核心代码
编程平台
Mixly库
Mind+库
MakeCode扩展
传感器系列
积木式传感器系列
黑板传感器系列
蓝板传感器系列
Micro:Bit
Micro:Bit 通用基础教程
Valon智能车
Valon-I
帮助
帮助
wiki语法参考
工具箱
链入页面
相关更改
特殊页面
页面信息