树莓派学习--底层GPIO开发
2017-02-26 19:25
176 查看
树莓派GPIO开发
树莓派提供了40Pin的IO接口,除了电源和地,还有大量GPIO以及各类通信接口,可供用户开发或学习。先试一试最简单的GPIO应用,点亮一个LED以及检测按键输入,硬件上,LED连接在3引脚,按键链接在5引脚,也就是BCM2和BCM3
C库
树莓派官方当然也提供了C语言库,用来访问底层接口的编程1. 安装C库
下载BCM2835库得到文件
bcm2835-1.50.tar.gz
然后安装库
tar zxvf bcm2835-1.50.tar.gz cd bcm2835-1.50/ ./configure make sudo make install
于是编译好的 libbcm2835.a被安装在 /usr/local/lib/文件夹,
头文件bcm2835.h文件在/usr/local/include文件夹下
* 库使用说明文档.
2. 用法
包含头文件
#include <bcm2835.h>
程序开始调用init函数,结束调用close函数
bcm2835_init();
bcm2835_close();
编译加链接选项
-l bcm2835
如果使用gpio以外的其他功能,运行程序需要root超级权限,使用sudo运行
3. 测试LED
下面写一个简单的程序,点亮LED灯程序来测试以及说明用法
``` #include <bcm2835.h> int main(int argc, char **argv) { if (!bcm2835_init()) { return 1; } bcm2835_gpio_fsel(RPI_GPIO_P1_11, BCM2835_GPIO_FSEL_OUTP); bcm2835_gpio_write(RPI_GPIO_P1_11, HIGH); bcm2835_delay(2000); bcm2835_gpio_write(RPI_GPIO_P1_11, LOW); bcm2835_close(); return 0; } ```
程序中首先调用
bcm2835_init()初始化,然后设置11Pin为输出模式,接着输出写高电平,
点亮LED,等待2秒后,关闭LED,调用
bcm2835_close()关闭初始化中的相关设置,程序完成。
然后编译运行
``` gcc -o led led.c -l bcm2835 ./led ```
运行后就能看到接到11引脚的LED亮2秒钟然后西门,程序退出
4. 按键输入
当用按键功能的时候,gpio设置输入模式,并根据实际需要设置上下拉电阻,然后读取引脚状态即可获取按键值
``` bcm2835_gpio_fsel(RPI_GPIO_P1_05, BCM2835_GPIO_FSEL_INPT); bcm2835_gpio_set_pud(RPI_GPIO_P1_05, BCM2835_GPIO_PUD_UP); uint8_t key = bcm2835_gpio_lev(RPI_GPIO_P1_05); ``` 稍微修改一下上面才程序,测试按键,如下 ``` #include <bcm2835.h> int main(int argc, char **argv) { if (!bcm2835_init()) { return 1; } bcm2835_gpio_fsel(RPI_GPIO_P1_11, BCM2835_GPIO_FSEL_OUTP); bcm2835_gpio_fsel(RPI_GPIO_P1_05, BCM2835_GPIO_FSEL_INPT); bcm2835_gpio_set_pud(RPI_GPIO_P1_05, BCM2835_GPIO_PUD_UP); bcm2835_gpio_write(RPI_GPIO_P1_11, HIGH); while (bcm2835_gpio_lev(RPI_GPIO_P1_05) != 0) { bcm2835_delay(10); } bcm2835_gpio_write(RPI_GPIO_P1_11, LOW); bcm2835_close(); return 0; } ``` 点亮LED后程序持续扫描按键,当按键被按下,while循环退出,关闭LED,程序结束。
参考文档
相关文章推荐
- 也谈WinCE底层开发学习流程
- 深入浅出嵌入式底层软件开发(嵌入式学习书籍)
- 树莓派开发系列教程9——树莓派GPIO控制
- 嵌入式底层软件开发学习系列之一目录
- 安卓学习教程总结:芯灵思开发板安卓底层开发
- WINCE底层开发学习总结:中断有关
- 嵌入式底层软件开发学习系列之五调试方法
- [树莓派内核学习]内核模块开发
- 树莓派开发系列教程9——树莓派GPIO控制
- 嵌入式底层软件开发学习系列之三开发与就业方向
- 一步一步的学习android应用开发到系统底层开发之android开发层次及所需技术
- 树莓派学习笔记——Shell脚本操作GPIO
- 我对嵌入式底层开发学习的一点看法
- [树莓派内核学习]Qt的开发流程
- ARM处理器学习之--GPIO操作篇 分类: 嵌入式开发学习 2014-06-08 18:22 336人阅读 评论(0) 收藏
- 一步一步的学习android应用开发到系统底层开发之android数据解析JSON篇
- 树莓派学习笔记——GPIO功能学习
- 树莓派学习笔记——RPi.GPIO 流水灯
- 树莓派 Python GPIO 学习笔记
- 嵌入式底层软件开发学习系列之四基本技能篇