[转]树莓派gpio口控制
【 【开发语言】——C语言 【简单介绍】BCM2835 C
Library可以理解为使用C语言实现的相关底层驱动,它给我的感觉更像STM32的库函数,BCM2835 C
Library的驱动库包括GPIO、SPI和UART等,可以通过学习BCM2835 C
Library熟悉BCM2835相关的寄存器操作。如果有机会开发树莓派上的linux驱动,或自主开发python或PHP扩展驱动,可以从
BCM2835 C Library找到不少的“灵感”。
2.注意事项
【编号方式】
树莓派的软件扩展库虽然很多,但也导致了扩展库“碎片化”的问题,例如操作树莓派的GPIO端口,GPIO的编号便存在三种不同的方式
可以在windows中编写代码,如果是Python脚本可通过FTP软件传输到树莓派中,然后使用SSH客户端登录到树莓派中执行Python脚本。如
果是C语言文件,除了使用FTP传输之外还需要在树莓派上编译才可以生成可执行文件(相当于windows上的exe文件)。相关软件操作请参考【 【3】在其他linux中编写
$ wget # 解压缩
# 进入解压之后的目录
# 启动安装
新建一个名为led.py的文件,该文件具体内容如下:
- import RPi.GPIO as GPIO
- import time
- # BOARD编号方式,基于插座引脚编号
- GPIO.setmode(GPIO.BOARD)
- # 输出模式
- GPIO.setup(11, GPIO.OUT)
- while True:
- GPIO.output(11, GPIO.HIGH)
- time.sleep(1)
- GPIO.output(11, GPIO.LOW)
- time.sleep(1)
sudo python led.py
好吧,扩展板上的LED等开始闪烁了。最后使用Ctrl+C结束Python程序。
【1】 【2】由于采用插座引脚编号方式,此处的11脚相当于BCM2835寄存器编号方式的引脚11。
- int main(void)
- {
- wiringPiSetup() ;
- pinMode (0, OUTPUT) ;
- for(;;)
- {
- digitalWrite(0, HIGH) ; delay (500) ;
- digitalWrite(0, LOW) ; delay (500) ;
- }
- }
# 解压缩
# 进入压缩之后的目录
新建一个名为blink.c的程序,程序的具体内容如下:
- // P1插座第11脚
- #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(100);
- bcm2835_gpio_write(PIN, LOW);
- bcm2835_delay(100);
- }
- bcm2835_close();
- return 0;
- }