树莓派GPIO口驱动编写

一、wiringpi写法

#include <wiringPi.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
    if(argc<2)
        return -1; 

    if(argc==2)
    {
        wiringPiSetup();
        pinMode(0, OUTPUT);
        if(atoi(argv[1]) == 1)
            digitalWrite(0, HIGH);
        else if(atoi(argv[1]) == 0)
            digitalWrite(0, LOW);

        return 0;
    }   

    return 0;
}

可以使用shell指令查看GPIO对应情况:

$gpio readall

官方网站:http://wiringpi.com/

二、bcm2835

#include <bcm2835.h>
#include <stdio.h>

/*GPIO pin 17*/
#define PIN RPI_GPIO_P1_11

int main(int argc,char **argv)
{
    if(!bcm2835_init())
        return 1;

    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

    while(1)
    {
        bcm2835_gpio_write(PIN,HIGH);

        bcm2835_delay(500);

        bcm2835_gpio_write(PIN,LOW);

        bcm2835_delay(500);
    }
    bcm2835_close();
    return 0;
}

GPIO口配置:http://elinux.org/RPi_Low-level_peripherals

bcm2835官网:http://www.airspayce.com/mikem/bcm2835/index.html

时间: 2024-12-17 15:01:55

树莓派GPIO口驱动编写的相关文章

树莓派GPIO控制

陈拓[email protected] 2018.06.09/2018.06.10 0.  概述 本文介绍树莓派 Zero W的GPIO控制,并用LED看效果. 0.1 树莓派GPIO编号方式 功能物理引脚 从左到右,从上到下:左边基数,右边偶数:1-40 BCM 编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号. wiringPi 编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程.如图 WiringPi一栏. 操作GPIO时一定先要清楚使用那一套编号. 1.  准

[转]LCD驱动编写小结及BSWP 和 HWSWP的作用

在设置lcdcon5时遇到BSWP 和 HWSWP两个使能位,知道是高低位互换,但真是有什么用倒没想到,下面转载的这篇文章略有提及,参考一下========================================== 3.1 背光:对于大部分的彩色LCD一定要接背光,我们才能看到屏上的内容: 3.2 控制信号:不同的LCD厂商对于控制信号有不同的叫法, VFRAME:LCD控制器和LCD驱动器之间的帧同步信号.该信号告诉LCD屏的新的一帧开始了.LCD控制器在一个完整帧显示完成后立即插入

【Rayeager PX2】PX2上使用GPIO口的例程

之前楼主在论坛中已经分享了简单驱动的编写,现在楼主再来教刚接触板子的新手们如何引用调用GPIO,不过这里楼主并没有将GPIO口的函数封装成库,然后在eclipse上调用,楼主这边的例子,只是简单的用adb工具进入板中,然后用一个测试程序使用端口,有兴趣想要在安卓界面调用端口的,可以参考楼主之前写的那编jni调用的帖子. 首先我们依旧来简单地说下步骤, 1.在/kernel/drivers下建个文件夹,自己创建并添加Kconfig和makefile,内容如下, 2.在该目录下写个gpio驱动,内容

Linux GPIO键盘驱动开发记录_OMAPL138

Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3.3内核文件下的driver目录,点开里面的C文件,感觉底层的Linux驱动机制还是很复杂的,还需要一段漫长时间的学习.现在开发的也不能说是叫做驱动,也只能说是驱动的应用,我们学习驱动也从应用逐步开始,往里面深入吧. 0.开发准备 内核源文件(当时我们编译内核时候的目录,很重要,编译驱动的时候需要依赖

树莓派 GPIO 控制

Raspberr Pi 官方提供了GPIO的usage,具体位置 https://www.raspberrypi.org/documentation/usage/gpio/ 这里整理了一下使用c语言做开发的实际例子. 常用开源工程简介 树莓派内核中已经编译自带了 gpio 的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有: python GPIO 开发语言--python 简单介绍--树莓派官方资料中推荐且容易上手.python GPIO 是一个小型的 pytho

Linux中的gpio口使用方法

Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h> 判断一个IO是否合法:int gpio_is_valid(int number); 设置GPIO的方向,如果是输出同时设置电平:/* set as input or output, returning 0 or negative errno */int gpio_direction_input(unsi

Tiny4412之串口(Uart)驱动编写

一:tiny4412串口驱动编写 1.串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线 接收数据.它很简单并且能够实现远距离通信.比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2 米:而对于串口而言,长度可达1200米. 串口通信所采用的通信协议为RS-232,RS-232通信方式允许简单连

[arm驱动]input system 子系统的驱动编写

更多可参考 Linux输入子系统分析 input 子系统架构总结 1.定义一个static struct input_dev结构体 static struct input_dev *mybutton_dev; 2.初始化时分配input_dev结构体 mybutton_dev = input_allocate_device();//分配 input_dev /*能产生的事件类型 1. #define EV_SYN 0x00 /*表示设备支持所有的事件*/ 2. #define EV_KEY 0x

SPI驱动编写要点

题外话:面对成功和失败,一个人有没有“冠军之心”,直接影响他的表现. 几周前剖析了Linux SPI 驱动框架,算是明白个所以然,对于这么一个庞大的框架,并不是每一行代码都要自己去敲,因为前人已经把这个框架搭建好了,作为驱动开发者的我们只需要搞清楚哪一部分是需要自己修改或重新编写就OK了. 结合Linux内核面向对象的设计思想,SPI总的设计思路大概是这样的: 第①处:内核中抽象了SPI控制器,让spi_master成为他的象征,他的实例化对象就是与硬生生的SPI控制器对应的,在Linux内核中