按键
中断函数的使用
中断信号函数的使用
int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
使用到的edgeType宏:
INT_EDGE_FALLING,
INT_EDGE_RISING,
INT_EDGE_BOTH,
INT_EDGE_SETUP
初始化按键
- pin
#define PIN_KEY1 26
#define PIN_KEY2 23
#define PIN_LED 7
pinMode(PIN_KEY1, INPUT);
pinMode(PIN_KEY2, INPUT);
pinMode(PIN_LED, OUTPUT);
- 设置中断槽函数
void LED_ON_func(){
printf("LED ON\n");
digitalWrite(PIN_LED,1);
}
void LED_OFF_func(){
printf("LED OFF\n");
digitalWrite(PIN_LED,0);
}
- 绑定中断信号和槽函数
wiringPiISR(PIN_KEY1, INT_EDGE_FALLING, LED_ON_func);
wiringPiISR(PIN_KEY2, INT_EDGE_FALLING, LED_OFF_func);
###代码
/*
* keyInterrupt.c
*
*
*
*/
#include <stdio.h>
#include <wiringPi.h>
#define PIN_KEY1 26
#define PIN_KEY2 23
#define PIN_LED 7
void wiringPiStart(void)
{
wiringPiSetup();
pinMode(PIN_KEY1, INPUT);
pinMode(PIN_KEY2, INPUT);
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED,0);
}
void LED_ON_func(){
printf("LED ON\n");
digitalWrite(PIN_LED,1);
}
void LED_OFF_func(){
printf("LED OFF\n");
digitalWrite(PIN_LED,0);
}
int main(int argc, char **argv)
{
wiringPiStart();
//int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
//INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH or INT_EDGE_SETUP
wiringPiISR(PIN_KEY1, INT_EDGE_FALLING, LED_ON_func);
wiringPiISR(PIN_KEY2, INT_EDGE_FALLING, LED_OFF_func);
while(1){
}
return 0;
}