旗开得胜 上两章我们讲解了在树莓派上如何点亮一个LED灯,这一章我们讲解一下按键以及事件中断。
一、bcm2835
01 #include
02 #include
03
04 #define KEY 20
05 int main(int argc, char **argv)
06 {
07 if (!bcm2835_init())return 1;
08 bcm2835_gpio_fsel(KEY, BCM2835_GPIO_FSEL_INPT);
09 bcm2835_gpio_set_pud(KEY, BCM2835_GPIO_PUD_UP);
10 printf(\
11 while (1)
读万卷书 行万里路
1
12 {
13 if(bcm2835_gpio_lev(KEY) == 0)
14 {
15 printf (\
16 while(bcm2835_gpio_lev(KEY) == 0)
17 bcm2835_delay(100);
18 }
19 bcm2835_delay(100);
20 }
21 bcm2835_close();
22 return 0;
23 }
编译并执行,按下按键会看到窗口显示”KEY PRESS”,按Ctrl+C结束程序。读万卷书 行万里路
旗开得胜 2
1 gcc –Wall key.c –o key –lbcm2835
2
3 sudo ./key
注:(1)bcm2835_gpio_fsel(KEY, BCM2835_GPIO_FSEL_INPT);设置管脚为输入模式
(2)bcm2835_gpio_set_pud(KEY, BCM2835_GPIO_PUD_UP);设置为上拉模式
(3) bcm2835_gpio_lev(KEY);读取管脚状态
二、wiringPi
01 #include
02 #include
03
04 char KEY = 29;
05
06 int main()
07 {
读万卷书 行万里路
旗开得胜 3