提问关于外部中断的问题,芯片是合宙air001,编程环境使用arduino。编写一个程序,一个按键作为触发外部中断的工具,当按键按下后就会触发中断程序,有一个led灯会闪烁。现在问题是当按键一直被按下时,我的想法是中断程序会不断被唤起,并执行,但是实际效果是按键被按下后不松手,led要么闪烁一次,要么即使手松开了,也一直在闪烁,请问这是为什么?
代码如下:
#define leftButton PF_0
#define rightButton PB_6 //PB_6连接着boot按键
#define leftLight PB_1
#define rightLight PB_3
void onChangeright();
void setup() {
pinMode(PB_0, OUTPUT);
pinMode(leftLight, OUTPUT);
pinMode(rightLight,OUTPUT);
pinMode(leftButton,INPUT_PULLDOWN);
pinMode(rightButton,INPUT_PULLDOWN);
attachInterrupt(digitalPinToInterrupt(rightButton), onChangeright, RISING);
Serial.begin(115200);
Serial.printf("Hello, Air001. \n");
}
void loop() {
static int count = 2;
if (count % 2 == 0) {
digitalWrite(PB_0, HIGH);
} else {
digitalWrite(PB_0, LOW);
}
delay(1000);
}
void onChangeright(){
if(digitalRead(rightButton) == HIGH){
digitalWrite(rightLight,HIGH);
delay(1000);
digitalWrite(rightLight,LOW);
delay(1000);
}
while(1){
if(digitalRead(rightButton) == HIGH){
break;
}
else{
digitalWrite(rightLight,HIGH);
delay(1000);
digitalWrite(rightLight,LOW);
delay(1000);
}
}
}