BBB板子中的GPIO引腳中斷輸入,下降沿觸發

2021-08-20 01:57:44 字數 1963 閱讀 5047

#include#include#include#include#include#include#define msg(args...) printf(args) 

//函式宣告

static int gpio_export(int pin);

static int gpio_unexport(int pin);

static int gpio_direction(int pin, int dir);

static int gpio_write(int pin, int value);

static int gpio_read(int pin);

static int gpio_edge(int pin, int edge);

static int gpio_export(int pin)

len = snprintf(buffer, sizeof(buffer), "%d", pin);

printf("%s,%d,%d\n",buffer,sizeof(buffer),len);

if (write(fd, buffer, len) < 0)

close(fd);

return 0;

} static int gpio_unexport(int pin)

len = snprintf(buffer, sizeof(buffer), "%d", pin);

if (write(fd, buffer, len) < 0)

close(fd);

return 0;

} //dir: 0-->in, 1-->out

static int gpio_direction(int pin, int dir)

if (write(fd, &dir_str[dir == 0 ? 0 : 3], dir == 0 ? 2 : 3) < 0)

close(fd);

return 0;

} //value: 0-->low, 1-->high

static int gpio_write(int pin, int value)

if (write(fd, &values_str[value == 0 ? 0 : 1], 1) < 0)

close(fd);

return 0;

}static int gpio_read(int pin)

if (read(fd, value_str, 3) < 0)

close(fd);

return (atoi(value_str));

} // none表示引腳為輸入,不是中斷引腳

// rising表示引腳為中斷輸入,上公升沿觸發

// falling表示引腳為中斷輸入,下降沿觸發

// both表示引腳為中斷輸入,邊沿觸發

// 0-->none, 1-->rising, 2-->falling, 3-->both

static int gpio_edge(int pin, int edge)

snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/edge", pin);

fd = open(path, o_wronly);

if (fd < 0)

if (write(fd, &dir_str[ptr], strlen(&dir_str[ptr])) < 0)

close(fd);

return 0;

}//gpio1_17

int main()

fds[0].fd = gpio_fd;

fds[0].events = pollpri;

while(1)

usleep(5);

} return 0;

}

GPIO復用引腳的釋放及gpio leds的註冊

一 根據mt7620 datasheet中gpio pin share schemes和wrtnode gpio引腳特徵,可以用來自定義的gpio引腳如以下標註所示 gpio pin share schemes 注 紅色框裡的是結合wrtnode的介面引數得到的可以釋放的gpio復用引腳。二 mt7...

中斷號和晶元中斷引腳的關係

一直以來搞不懂這個中斷號的來歷,總以為是中斷控制器自己規定的乙個號,但是最近在看了s3c2440的中斷控制後才發現不是這麼一回事.2440的中斷處理只能處理32個中斷,但是其在核心中出現的中斷號卻有51,58等.而且它的外部中斷int4 7共享乙個中斷控制暫存器的一位,int8 23也是共享控制暫存...

中斷號和晶元中斷引腳的關係

一直以來搞不懂這個中斷號的來歷,總以為是中斷控制器自己規定的乙個號,但是最近在看了s3c2440的中斷控制後才發現不是這麼一回事.2440的中斷處理只能處理32個中斷,但是其在核心 現的中斷號卻有51,58等.而且它的外部中斷int4 7共享乙個中斷控制暫存器的一位,int8 23也是共享控制暫存器...