樹莓派学習--下層GPIO開発

2519 ワード

樹莓派GPIO開発
樹莓派は40 PinのIOインタフェースを提供し、電源と地のほか、GPIOと各種通信インタフェースが多く、ユーザーの開発や学習に利用できる.まず最も簡単なGPIOアプリケーションを試してみて、1つのLEDを点灯してキー入力を検出して、ハードウェアの上で、LEDは3ピンに接続して、キーリンクは5ピンで、つまりBCM 2とBCM 3です
Cライブラリ
ベリーパイ公式はもちろん、最下位インタフェースのプログラミングにアクセスするためのC言語ライブラリも提供しています.インストールCライブラリBCM 2835ライブラリをダウンロードしてファイルbcm2835-1.50.tar.gzを取得し、インストールライブラリ
tar zxvf bcm2835-1.50.tar.gz
cd bcm2835-1.50/
./configure
make
sudo make install
からコンパイルされたlibbcm 2835.a/usr/local/lib/フォルダ、ヘッダファイルbcm 2835にインストール.hファイルは/usr/local/includeフォルダの下*ライブラリで使用説明ドキュメントです.2.使用法はヘッダファイル#include を含むプログラムがinit関数の呼び出しを開始し、close関数bcm2835_init();の呼び出しを終了するbcm2835_close();リンクオプション-l bcm2835 gpio以外の他の機能を使用する場合、プログラムを実行するにはrootスーパー権限が必要であり、sudoを使用して実行する.テストLEDの下に简単なプログラムを书いて、LEDランプのプログラムを点灯してテストして使い方を说明します
```
    #include 

    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()を呼び出して初期化し、11 Pinを出力モードに設定し、次にライトアップレベルを出力してLEDを点灯し、2秒待ってからLEDを閉じ、bcm2835_close()を呼び出して初期化中の関連設定を閉じ、プログラムは完了する.そしてコンパイル実行
```
gcc -o led led.c -l bcm2835
./led
```  

実行すると、11ピンのLEDが2秒点灯し、西門が表示され、プログラムが終了します.キー入力キー機能を使用する場合、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 

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,    。
  • 参照文書