connectionPiISR在每个引脚上触发回调

时间:2018-09-29 08:33:18

标签: c raspberry-pi interrupt interrupt-handling wiringpi

我正在将RaspberryPI与在c ++中连接libray一起使用,当我单击PIN 5上的按钮时,我想使用wireingPiISR引发事件。

这是代码

    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <stdlib.h>
    #include <wiringPi.h>
    #include <unistd.h>

    unsigned long last_interrupt_time = 0;

    #define PIN 5

    //gcc foo.c -o foo -lwiringPi

    void myEdge (void)
    {
        unsigned long interrupt_time = millis();
        if (interrupt_time - last_interrupt_time > 500) 
        {
            delay(200);
            if( digitalRead(PIN)== 1 ) 
                fprintf(stdout,"gpio rising\n");
            else 
                fprintf(stdout,"gpio falling\n");

            fflush(stdout);
        }
        last_interrupt_time = interrupt_time;  
    }

    int main (int argc,char **argv)
    {
        if (wiringPiSetupGpio() < 0)
        {   
            fprintf (stderr, "Errore: Unable to GPIO: %s\n", strerror (errno)) ;
            return 1 ;
        }

        pinMode(PIN, INPUT) ;
        pullUpDnControl(PIN, PUD_DOWN) ;

        if (wiringPiISR (PIN, INT_EDGE_BOTH , &myEdge) < 0)
        {
            fprintf (stderr, "Errore: Unable to setup ISR: %s\n", strerror (errno)) ;
            return 1 ;
        }

    while (1)
        delay (1000) ;

    return 1;
}

我编译白     gcc foo.c -o foo -lwiringPi

此代码有效,但是在我单击每个PIN ...时会触发...销5,还有4和6,也许还有其他...为什么?有人可以帮助我理解吗?

0 个答案:

没有答案