树莓派瞎玩~6~控制GPIO之C语言
Posted xiaobaidonghui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派瞎玩~6~控制GPIO之C语言相关的知识,希望对你有一定的参考价值。
使用C控制GPIO时,常用的是wiringPi
模块,点此查看API文档。现在使用C语言完成上文Python语言实现的相同功能。
控制GPIO输出
创建一个.c
文件,如gpio24_blink.c
,编辑代码
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#define GPIO_PIN 24
int main()
if(wiringPiSetupGpio() == -1) //wiringPiSetupGpio()表示使用GPIO编号,wiringPiSetup()则使用物理编号
printf("Setup wiringPi failed!");
return -1;
pinMode(GPIO_PIN, OUTPUT); // 设置引脚为输出
while(1)
digitalWrite(GPIO_PIN, 1); // 设置输出高电平
delay(1000);
digitalWrite(GPIO_PIN, 0); // 设置输出低电平
delay(1000);
return 0;
保存后回到命令行链接执行。
pi@raspberrypi:~/python_gpio $ gcc gpio24_blink.c -o gpio24_blink -l wiringPi
pi@raspberrypi:~/python_gpio $ sudo ./gpio24_blink
读取GPIO引脚的状态(轮询)
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#define GPIO_PIN 24
int count = 5;
int main()
if(wiringPiSetupGpio() == -1) //wiringPiSetupGpio()表示使用GPIO编号,wiringPiSetup()则使用物理编号
printf("Setup wiringPi failed!");
return -1;
pinMode(GPIO_PIN, INPUT); // 设置引脚为输出
printf("waiting 5 times...\\n");
fflush(stdout);
while(count > 0)
if(digitalRead(GPIO_PIN) == 1)
count--;
printf("input high\\n");
fflush(stdout);
delay(100);
printf("exit...\\n");
return 0;
读取GPIO引脚的状态(中断)
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#define GPIO_PIN 24
static volatile int count = 5;
void doThings(void)
if(count > 0)
--count;
printf("input high\\n");
fflush(stdout);
int main (void)
int myCounter = 0;
if(wiringPiSetupGpio() == -1) //wiringPiSetupGpio()表示使用GPIO编号,wiringPiSetup()则使用物理编号
printf("Setup wiringPi failed!");
return -1;
if(wiringPiISR(GPIO_PIN, INT_EDGE_FALLING, &doThings) < 0)
printf("Regist interrupts failed!");
return -2;
printf("waiting 5 times...\\n");
fflush(stdout);
while(1)
if(count <= 0)
break;
delay(100);
printf("exit...");
return 0 ;
以上是关于树莓派瞎玩~6~控制GPIO之C语言的主要内容,如果未能解决你的问题,请参考以下文章