首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino中断函数

Arduino中断函数
EN

Stack Overflow用户
提问于 2018-05-01 20:22:53
回答 2查看 103关注 0票数 0

我想在方波脉冲的上升沿和下降沿调用一些函数。我用attachInterrupt(digitalPinToInterrupt(interruptPin),udara,RISING)表示上升沿,用attachInterrupt(digitalPinToInterrupt(interruptPin),blank表示下降沿。但是我没有得到保守的上升和下降的串行输出。这个问题的答案是什么?我的代码是这样写的。

代码语言:javascript
复制
enter code here
const byte interruptPin = 2;

void setup() {
    Serial.begin(9600);
    pinMode(interruptPin, INPUT);

}

void loop() {
    attachInterrupt(digitalPinToInterrupt(interruptPin), udara, RISING);
    attachInterrupt(digitalPinToInterrupt(interruptPin), blank, FALLING);
}

void udara() {
    Serial.println("rise");

}`

void blank() {
    Serial.println("fall");
}
EN

回答 2

Stack Overflow用户

发布于 2018-05-01 21:16:42

attachInterrupt()应该是setup()的一部分,而不是loop()的一部分,因为它用于设置事件触发器和回调。

代码语言:javascript
复制
const byte interruptPin = 2;

void setup() {
    Serial.begin(9600);
    pinMode(interruptPin, INPUT);
    attachInterrupt(digitalPinToInterrupt(interruptPin), udara, RISING);
    attachInterrupt(digitalPinToInterrupt(interruptPin), blank, FALLING);
}

void loop() {

}

void udara() {
    Serial.println("rise");
}

void blank() {
    Serial.println("fall");
}
票数 1
EN

Stack Overflow用户

发布于 2018-05-02 07:12:11

串行使用中断来推送数据。这些中断在ISR期间被禁用。因此,最好避免在ISR中使用串行。更改代码以在ISR中设置一个标志,并根据该标志执行from循环打印。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50116386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档