WiringPi is a C++ library for Raspberry Pi, we port it to Khadas SBC, With this library you can use many of the functionalities provided by the GPIO header: digital pins, SPI, I2C, UART, etc.
There are two methods here, via command line or C program.
Run gpio readall
, and it will print a table about the status of all GPIO pins.
GPIO
–> GPIO native number
wPi
–> WiringPi number
Mode
–> GPIO Mode ,ALT
mean that this pin defined as a special function
V
–> 1 - HIGH, 0 - LOW
PU/PD
–> PU
- pull up, PD
- pull down, DSBLD
- disabled
Here’s an example of controlling wpi number 1.
$ gpio mode 1 out
$ gpio write 1 0
$ gpio write 1 1
The test program changes the level value every 5S.
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright (c) 2022 Wesion Technology Co., Ltd. * * Author: Yan <yan-wyb@foxmail.com> * */ #include <stdio.h> #include <wiringPi.h> const int gpio_pin = 1; int main() { if(-1 == wiringPiSetup()){ printf("set up error"); exit(1); } pinMode(gpio_pin,OUTPUT); while(1){ digitalWrite(gpio_pin,HIGH); printf("wPi Pin %d now is GIGH\n",gpio_pin); delay(5000); digitalWrite(gpio_pin,LOW); printf("wPi Pin %d now is LOW\n",gpio_pin); delay(5000); } exit(0); }
Compile
$ gcc -o wiringpi wiringpi.c -lwiringPi -lpthread -lrt -lm -lcrypt
Run
sudo ./wiringpi wPi Pin 1 now is GIGH wPi Pin 1 now is LOW wPi Pin 1 now is GIGH wPi Pin 1 now is LOW
You can use gpio read 1
to observe the pin level changes.
Special pin functions of wiringpi include SPI
,I2C
,ADC
,SoftPWM
.
Please refer to the 40-Pin Header for the corresponding physical pins.