参考 https://blog.csdn.net/zhuming3834/article/details/83177072?spm=1001.2014.3001.5506
根据大佬的代码 我更改代码实现了按键对led灯的开和关的控制
定义按键和LED灯(wiringPi编码)
#define key 29
#define led 23 //wiringPi pin
中断执行函数
int flag=0;
void blank(void)
{
flag++;
}
主函数
int main(){
wiringPiSetup(); //wiringPi管脚初始化
pinMode(23,OUTPUT); //LED灯定义为输出
pinMode(29,INPUT); //按键定义为输入
pullUpDnControl(29,PUD_UP); //设置按键为上拉输入
delay(100);
wiringPiISR(29,INT_EDGE_FALLING,&blank); //按键下降沿触发,执行blank函数
while(1)
{
if((flag%2)==1) //1%2==1 2%2==0 按下一次flag++;
{
delay(20); //按键消抖
digitalWrite(23,HIGH); //写入高电平
}
else if((flag%2)==0)
{
delay(20);
digitalWrite(23,LOW);
}
else {exit(-1);} //错误直接退出,停止运行
}
return 0;
}
完整实验代码
#include<stdio.h>
#include<stdlib.h>
#include<wiringPi.h>
#define key 29
#define led 23 //wiringPi pin
void blank(void);
int flag=0;
void blank(void)
{
flag++;
}
int main(){
wiringPiSetup();
pinMode(23,OUTPUT);
pinMode(29,INPUT);
pullUpDnControl(29,PUD_UP);
delay(100);
wiringPiISR(29,INT_EDGE_FALLING,&blank);
while(1)
{
if((flag%2)==1)
{
delay(20);
digitalWrite(23,HIGH);
}
else if((flag%2)==0)
{
delay(20);
digitalWrite(23,LOW);
}
else {exit(-1);}
}
return 0;
}