我想在方波脉冲的上升沿和下降沿调用一些函数。我用attachInterrupt(digitalPinToInterrupt(interruptPin),udara,RISING)表示上升沿,用attachInterrupt(digitalPinToInterrupt(interruptPin),blank表示下降沿。但是我没有得到保守的上升和下降的串行输出。这个问题的答案是什么?我的代码是这样写的。
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");
}发布于 2018-05-01 21:16:42
attachInterrupt()应该是setup()的一部分,而不是loop()的一部分,因为它用于设置事件触发器和回调。
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");
}发布于 2018-05-02 07:12:11
串行使用中断来推送数据。这些中断在ISR期间被禁用。因此,最好避免在ISR中使用串行。更改代码以在ISR中设置一个标志,并根据该标志执行from循环打印。
https://stackoverflow.com/questions/50116386
复制相似问题