天天看點

樹莓派ZeroW學習筆記【1】wiringPi 常用函數說明官方函數說明一、wiringPi初始化函數二、通用GPIO控制函數三、時間控制函數四、中斷&優先級處理函數五、多線程處理函數六、序列槽控制函數七、SPI控制函數八、I2C控制函數九、移位處理函數十、PWM控制函數

官方函數說明

Reference | Wiring Pi

  • Raspberry Pi specific functions          初始化、GPIO控制函數
  • Timing functions                                 時間控制函數
  • Program priority, timing and threads  優先級、中斷以及多線程函數
  • Serial library                                       序列槽控制函數
  • SPI library                                          SPI控制函數
  • I2C library                                          I2C控制函數
  • Shift library                                        移位處理函數
  • Software PWM library                       軟體PWM通用處理函數
  • Software tone library                         軟體PWM音頻處理函數

一、wiringPi初始化函數

使用wiringPi時,必須先初始化樹莓派,否則程式不能正常工作。

函數 功能 傳回值 權限需求 備注
int wiringPiSetup (void) 根據wiringPi引腳編号系統初始化樹莓派 傳回執行狀态值,當傳回-1時表示失敗。 root 最常用
int wiringPiSetupGpio (void) 根據BCM引腳編号系統初始化樹莓派 傳回執行狀态值,當傳回-1時表示失敗。 root
int wiringPiSetupPhys (void) 根據Broadcom晶片的GPIO管腳号初始化樹莓派 傳回執行狀态值,當傳回-1時表示失敗。 root 不常用
int wiringPiSetupSys (void) 由系統接管,使用/sys/class/gpio接口,不直接操作硬體,通過shell或者直接system()函數來調用gpio指令 傳回執行狀态值,當傳回-1時表示失敗。 -- 根據情況使用

二、通用GPIO控制函數

函數 功能 參數說明 傳回值 權限需求 備注
void pinMode (int pin, int mode) 配置引腳的IO模式

pin

引腳編号,由初始化函數決定采用哪種編号系統

mode

指定引腳的IO模式

可取的值:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK

-- --

僅wiringPi Pin1(BCM Pin18)支援PWM輸出

僅wiringPi Pin7(BCM Pin4)  支援CLK輸出

void digitalWrite (int pin, int value) 讓一個已經配置為輸出模式的引腳輸出高/低電平信号

pin

引腳編号,由初始化函數決定采用哪種編号系統

value

引腳輸出的電平值

HIGH = 高電平

LOW  = 低電平

-- --
int digitalRead (int pin) 讀取一個引腳的電平值

pin

引腳編号,由初始化函數決定采用哪種編号系統

傳回引腳上的電平狀态值

0 = LOW

1 = HIGH

--
void analogWrite(int pin, int value) 模拟量的輸出

pin

引腳編号,由初始化函數決定采用哪種編号系統

value

輸出的模拟量的數字量化值

-- --

樹莓派的引腳本身是不支援AD轉換的,也就是不能使用模拟量的API,

需要增加另外的子產品,包括但不限于Gertboard和quick2Wire analog board擴充闆

int analogRead (int pin) 模拟量的輸入

pin

引腳編号,由初始化函數決定采用哪種編号系統

傳回模拟量的數字量化值 --

樹莓派的引腳本身是不支援AD轉換的,也就是不能使用模拟量的API,

需要增加另外的子產品,包括但不限于Gertboard擴充闆

void pwmWrite (int pin, int value) 輸出一個值到PWM寄存器,控制PWM輸出。

pin

引腳編号,由初始化函數決定采用哪種編号系統

value

寫入到PWM寄存器的值,範圍在0~1024之間。

-- -- pin隻能是wiringPi 引腳編号下的1腳(BCM下的18腳)
void pullUpDnControl (int pin, int pud)

pin

引腳編号,由初始化函數決定采用哪種編号系統

pud

拉電阻模式

PUD_OFF        不啟用任何拉電阻。關閉拉電阻。

PUD_DOWN    啟用下拉電阻,引腳電平拉到GND

PUD_UP          啟用上拉電阻,引腳電平拉到3.3v

-- -- 樹莓派内部的拉電阻≈50kΩ

三、時間控制函數

功能 參數說明 傳回值 權限需求 備注
unsigned int millis (void) 傳回一個從你的程式執行 初始化函數(比如wiringPiSetup)到執行本函數時所經過的時間,以毫秒計數。 -- 傳回類型是unsigned int,最大可記錄 大約49天的毫秒時長。 --
unsigned int micros (void) 傳回一個從你的程式執行 初始化函數(比如wiringPiSetup)到執行本函數時所經過的時間,以微秒計數。 -- 傳回類型是unsigned int,最大可記錄 大約71分鐘的時長。 --
void delay (unsigned int howLong) 将目前執行流暫停并等待指定的毫秒數後跳出。

howLong

參數是unsigned int 類型,最大延時時間可達49天

-- -- 因為Linux本身是多線程的,是以實際暫停時間可能會長一些。
void delayMicroseconds (unsigned int howLong) 将目前執行流暫停并等待指定的微秒數後跳出。

howLong

參數是unsigned int 類型,最大延時時間可達71分鐘

-- -- 因為Linux本身是多線程的,是以實際暫停時間可能會長一些。

四、中斷&優先級處理函數

五、多線程處理函數

六、序列槽控制函數

七、SPI控制函數

八、I2C控制函數

九、移位處理函數

十、PWM控制函數

未 完 待 續