我想在方波脉冲的上升沿和下降沿调用一些函数。我使用attachInterrupt(digitalPinToInterrupt(interruptPin),udara,RISING)用于上升沿和attachInterrupt(digitalPinToInterrupt(interruptPin),空白,FALLING)用于下降沿。但我没有得到保守上升和下降的串行输出。这个问题的答案是什么?我的代码编写如下。
SendMessage(Handle, CB_SETDROPPEDWIDTH, 100, 200);
答案 0 :(得分:1)
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");
}
答案 1 :(得分:0)
Serial使用中断来推出数据。在ISR期间禁用这些中断。因此,最好避免在ISR中使用Serial。更改代码以在ISR中设置标志,并从循环执行打印以响应标志。