树莓派GPIO

#include <wiringPi.h>  
int main(void)  
{  
  wiringPiSetup() ;  
  pinMode (0, OUTPUT) ;  
  for(;;)   
  {  
    digitalWrite(0, HIGH) ; delay (500) ;  
    digitalWrite(0,  LOW) ; delay (500) ;  
  }  
}  




1、打开SPI
树莓派默认spi是关掉的,我们需要打开
sudo vi /etc/modprobe.d/raspi-blacklist.conf
把下面这句话前面的#号删掉
blacklist spi-bcm2708


自动加载模块
sudo vi  /etc/modules
加入以下语句,既可以在启动时自动加载模块






gpio load spi


//100KB buffer
gpio load spi 100


#include <wiringPiSPI.h>


int wiringPiSPISetup (int channel, int speed) ;
The Pi has 2 channels; 0 and 1)
The speed parameter is an integer in the range 500,000 through 32,000,000 HZ


int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ;


#include <wiringPi.h> 
int main (void)
{
    if (wiringPiSPISetup(0, 5000000) == -1) 
    {
       return -1;
    }
   
    for (;;) 
    {
        uint8_t c = 0x00
        wiringPiSPIDataRW(0, &c, 1);
        delay(1000);
    }
}




ls -la /dev/spi*
crw------- 1 root root 153, 0 Jan  1  1970 /dev/spidev0.0
crw------- 1 root root 153, 1 Jan  1  1970 /dev/spidev0.1



1.void pinMode (int pin, int mode) ;

这个函数式设置pin脚的输入和输出模式以及PWM的输入和输出模式。在 wiringPi中只有 pin 1 (BCM_GPIO 18)是支持PWM的输出的。

2.void digitalWrite (int pin, int value) ;

这个函数式用来设置pin脚的高低电平的,当我们写HIGH or LOW (1 or 0)的时候pin脚的mode必须为输出模式。

3.void digitalWriteByte (int value) ;

这个函数可以将8位字节写给8个GPIO pin脚,这是设置8个pin脚值的最快的方式。

4.void pwmWrite (int pin, int value) ;

这个函数是给PWM寄存器写入值然后控制GPIO的值的,写入的值必须是0-1024.

5.int digitalRead (int pin) ;

这个函数是读取GPIO的pin脚的电平高低然后返回读取的值。

6.void pullUpDnControl (int pin, int pud) ;

这个函数是设置GPIO的pin脚是否接上拉电阻和下拉电阻的。函数的参数pud必须设置,当设置为PUD_OFF时表示没有上拉电阻和下拉电阻,当设置为PUD_DOWN 时为下拉电阻,设置为PUD_UP是为上拉电阻。

PWM的控制:

1.pwmSetMode (int mode) ;

这个函数是设置PWM的占空比模式一般为50%占空比和占空比可调模式。树莓派默认是50%占空比模式,我们可以通过PWM_MODE_BAL 和PWM_MODE_MS这两个参数来设置。

2.pwmSetRange (unsigned int range) ;

这个函数是设置PWM寄存器写入的范围,一般默认为1024.

3.pwmSetClock (int divisor) ;

这个函数的设置PWM时钟的分频因子。

定时函数:

1.void delay (unsigned int howLong)

这个是毫秒级的延时函数。

2.void delayMicroseconds (unsigned int howLong)

微秒级的延时函数

关于中断的函数:

1.int waitForInterrupt (int pin, int timeOut) ;

这一个等待事件中断函数,timeout参数是毫秒级别的参数,当为-1时代表永远等待中断状态。如果发生错误返回值是-1,0表示超时,1表示成功中断。调用这个函数之前我们需要对GPIO进行初始化。

例如我们要设置GPIO 0为等待下降沿中断:

我们需要在运行程序之前先终端运行   gpio edge 0 falling

2.int wiringPiISR (int pin, int edgeType,  void (*function)(void)) ;

这个函数是利用一个函数作为参数来获取在特定的GPIO pin脚的中断。edge_Type参数可以设定为 INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH or INT_EDGE_SETUP.

当中断发生的时候function将被调用,调用function之前会先清除相应的标志位,这就使得随后的中断不会被影响






https://github.com/WiringPi/WiringPi-PHP
git clone  --recursive https://github.com/WiringPi/WiringPi-PHP.git


sudo make install
include(ini_get('extension_dir') . '/wiringpi.php');




To choose the pin mapping type that you wish to use, create an ini file /etc/php5/conf.d/wiringpi.ini and adding the following:


extension=wiringpi.so
wiringpi.pinmaptype=[PINS|GPIO|USER]


sudo adduser www-data i2c
sudo adduser www-data spi
sudo adduser www-data gpio


include(ini_get('extension_dir') . '/wiringpi.php');
echo wiringpi::digitalRead(1);



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值