查看: 18008|回复: 10

[原创] 【分享】Raspberry Pi的GPIO端口控制入门

  [复制链接]
  • TA的每日心情

    2013-1-19 13:47
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-15 22:26:40 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 奇迹的龙 于 2013-1-16 01:29 编辑

    考完研闲了一段时间,这两天开始正式学习单片机开发,以便完成毕业设计。本来想跟大家分享Raspberry Pi与STM32F4DISCOVERY开发板之间,使用nRF24L01无线模块进行通讯的方法,无奈水平有限,暂时还没能调试好,为了赶上爱板网的这次分享活动,就先将Raspberry Pi的GPIO端口控制方法跟大家分享一下,其他的以后再发。

    第一步,安装系统.建议Raspberry Pi官方的Debian系统,在这里下载好镜像之后,dd至SD卡上即可,系统的初始化设置可能需要用到显示器。

    第二步,使用SSH登录Raspberry Pi。默认用户名:pi,密码:raspberry,主机名:raspberrypi,将Raspberry Pi通过网线连上路由器之后,使用ssh命令登录:
    1. ssh pi@raspberrypi
    复制代码
    第三步,下载并安装GPIO库。首先下载源代码:
    1. wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.16.tar.gz
    复制代码
    然后编译安装:
    1. tar xzvf bcm2835-1.16.tar.gz
    2. cd bcm2835-1.16
    3. ./configure
    4. make
    5. sudo make install
    复制代码
    第四步,示例。这个C库暂时还没有文档,所以只能先看代码注释了解用法,好在代码不多。下面用这个交替闪烁两个LED灯的示例来验证下吧。
    1. #include <bcm2835.h>

    2. #define LEDA_PIN RPI_GPIO_P1_16        /* LED灯A使用P1上的16引脚 */
    3. #define LEDB_PIN RPI_GPIO_P1_18        /* LED灯A使用P1上的18引脚 */

    4. int main(int argc, char **argv)
    5. {
    6.         if (!bcm2835_init())
    7.                 return 1;

    8.         /* 初始化GPIO端口 */
    9.         bcm2835_gpio_fsel(LEDA_PIN, BCM2835_GPIO_FSEL_OUTP);
    10.         bcm2835_gpio_write(LEDA_PIN, LOW);
    11.         bcm2835_gpio_fsel(LEDB_PIN, BCM2835_GPIO_FSEL_OUTP);
    12.         bcm2835_gpio_write(LEDB_PIN, LOW);

    13.         while (1) {
    14.                 bcm2835_gpio_write(LEDA_PIN, HIGH);
    15.                 bcm2835_gpio_write(LEDB_PIN, LOW);

    16.                 bcm2835_delay(250);

    17.                 bcm2835_gpio_write(LEDA_PIN, LOW);
    18.                 bcm2835_gpio_write(LEDB_PIN, HIGH);

    19.                 bcm2835_delay(250);
    20.         }

    21.         return 0;
    22. }
    复制代码
    第五步,编译运行。将上面的代码保存为文件,比如rpi_led.c,然后上传到Raspberry上:
    1. scp rpi_led.c pi@raspberrypi:~
    复制代码
    编译:
    1. gcc rpi_led.c -l rt  -l bcm2835 -o rpi_led
    复制代码
    将两只LED灯分别连接到GPIO23、GPIO24和Ground,运行:
    1. sudo ./rpi_led
    复制代码
    怎么样,两只LED灯是不是已经开始交替闪烁了?


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-1-1 01:21
  • 签到天数: 354 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-1-15 23:31:40 | 显示全部楼层
    不错不错!学习了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-1-28 16:20
  • 签到天数: 980 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-1-16 08:31:32 | 显示全部楼层
    不错不错!学习了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-3 11:17
  • 签到天数: 93 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2013-1-17 15:50:27 来自手机 | 显示全部楼层
    好东西,抄收了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-6-21 12:27
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-17 19:19:53 | 显示全部楼层
    我用的c语言编译成的sh脚本。直接控制的gpio。不用每次控制都写c然后再编译。这样我用的bash。就很简单写了一个灯亮等灭的程序。并且通过这样已经实现了任何客户端操作了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-1-19 13:47
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-18 16:03:30 | 显示全部楼层
    GeekNapster 发表于 2013-1-17 19:19
    我用的c语言编译成的sh脚本。直接控制的gpio。不用每次控制都写c然后再编译。这样我用的bash。就很简单写了 ...

    你的意思是把基本的GPIO操作编译成单独的程序,然后通过shell脚本使用吧。我觉得这样算不上方便,也不是很灵活,方便和灵活之间折中一下,wiringPi的Python封装是一个比较好的选择,其他的I2C、SPI功能也跟我提到的那个C库类似。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-6-21 12:27
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-19 00:27:46 | 显示全部楼层
    奇迹的龙 发表于 2013-1-18 16:03
    你的意思是把基本的GPIO操作编译成单独的程序,然后通过shell脚本使用吧。我觉得这样算不上方便,也不是 ...

    你所说的我都用过。不过就简单运行来说。直接用bash shell的最简单了。呵呵~Python跨平台好点。不过bash shell也是可以跨平台的。功能很强焊。wiringPi有的,它都有,I2C,SPI等。不过纠结这个电脑还是不要做下位机做的工作。通过串口控制下位机工作才是好办法。R.GPIO,这个在python官网的project,我觉得开始出发点就不好。所以作者也建议大家不要用Raspi做即时控制器,卖个的单片机比较好。也是现在我在学习AVR的原因之一吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-2-17 09:37
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-19 10:21:08 | 显示全部楼层
    受教~~!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-2-27 11:25:28 | 显示全部楼层
    不错不错 收下了先
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-4-7 08:22:57 | 显示全部楼层
    现在需要的就是这个啊,谢谢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:38 , Processed in 0.195517 second(s), 35 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.