概要:中断的使用使得程序高效
引脚:使用PB12作为外部中断引脚
代码:
uint8_t LED_flag=0; //设置标志位
void setup() {
Serial2.begin(115200); //串口初始化
pinMode(PC13,OUTPUT); //使用pinMode库函数将PC13引脚设为通用输出模式
digitalWrite(PC13,HIGH); //使用digitalWrite库函数将PC13引脚设置为高电平
pinMode(PB12, INPUT_PULLUP); //设置按键管脚PB12为上拉输入模式
//将中断服务函数与PB12绑定并设置为下降沿触发
attachInterrupt(PB12, handleInterrupt1, FALLING);
}
void loop() {
if(LED_flag){ //在循环中检测标志位
digitalWrite(PC13,LOW); //使用digitalWrite库函数将PC13引脚设置为低电平
delay(500); //延时500 ms
digitalWrite(PC13,HIGH); //使用digitalWrite库函数将PC13引脚设置为高电平
LED_flag=0; //恢复标志位
}
}
void handleInterrupt1() { //中断服务函数
Serial2.println("中断"); //在串口输出调试信息
LED_flag=1; //更改标志位
}
注意:中断服务函数尽量快速执行完然后退出,按键按下的过程中会有抖动,所以可能会触发多次中断
结果:按下按键并松开,板载LED亮灭一次,串口可能收到多次调试信息