樹莓派学習--下層GPIO開発
2519 ワード
樹莓派GPIO開発
樹莓派は40 PinのIOインタフェースを提供し、電源と地のほか、GPIOと各種通信インタフェースが多く、ユーザーの開発や学習に利用できる.まず最も簡単なGPIOアプリケーションを試してみて、1つのLEDを点灯してキー入力を検出して、ハードウェアの上で、LEDは3ピンに接続して、キーリンクは5ピンで、つまりBCM 2とBCM 3です
Cライブラリ
ベリーパイ公式はもちろん、最下位インタフェースのプログラミングにアクセスするためのC言語ライブラリも提供しています.インストールCライブラリBCM 2835ライブラリをダウンロードしてファイル
プログラムではまず
実行すると、11ピンのLEDが2秒点灯し、西門が表示され、プログラムが終了します.キー入力キー機能を使用する場合、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, 。