#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也是共享控制暫存器...