树莓派瞎玩~6~控制GPIO之C语言
2016-03-27 19:40
281 查看
树莓派瞎玩~6~控制GPIO之C语言
控制GPIO输出
读取GPIO引脚的状态轮询
读取GPIO引脚的状态中断
使用C控制GPIO时,常用的是
保存后回到命令行链接执行。
控制GPIO输出
读取GPIO引脚的状态轮询
读取GPIO引脚的状态中断
使用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 ; }
相关文章推荐
- 笔试真题-计算大位数的乘积
- C语言中main函数的参数
- C++中有关多态和继承的那些事
- C语言中怎么求动态数组大小
- 【c++程序】list一般用法
- 华为2016校招上机笔试题第一题
- C++<Algorithm>学习
- C++复制构造函数
- [面试] C/C++ —— MFC(四)
- 蓝桥杯
- 一起talk C栗子吧(第一百三十回:C语言实例--C程序内存布局二)
- c语言运算符号的优先级
- c的free和c++的delete的区别
- Windows程序设计 VC++6.0开发环境熟悉
- 【c++】猴子选大王
- 深入理解C指针学习笔记之常量和指针(六)
- C++ 第二次上机实验(作业)
- c++第二次实验—2
- TOJ : 4014. Warm up 2
- C语言笔记(二)