代码文件中需添加:#include <wiringPi.h>
编译行需指定include文件和库文件路径,如:
-I /usr/local/include -L/usr/local/lib -lwiringPi
初始化设置:
int wiringPiSetup (void) ;
初始化wiringPi,使用 wiringPi 的管脚定义图。
管脚定义请参考:
gpio readall
注意:此函数需要root权限。如果初始化失败,则程序直接退出。
GPIO设置
模式设置 void pinMode (int pin, int mode) mode:INPUT, OUTPUT, PWM_OUTPUT or GPIO_CLOCK。
PWM_OUTPUT:仅wiringPi pin 1有效。
GPIO_CLOCK:仅wiringPi pin 7有效。
上/下拉电阻设置 void pullUpDnControl (int pin, int pud) pud:PUD_OFF(no pull up/down), PUD_DOWN (pull to ground) or PUD_UP (pull to 3.3v)
注意:上/下拉电阻阻值为50k。
PWM模式设置 pwmSetMode (int mode) mode:PWM_MODE_BAL or PWM_MODE_MS(平衡模式/占空比模式)
默认为:PWM_MODE_BAL模式
占空比设置 pwmSetRange (unsigned int range) range:0-1024,default:1024
分频设置 pwmSetClock (int divisor) divisor:PWM Clock分频值
分频值设置请参考:the Broadcom ARM peripherals manual
GPIO读写
读 int digitalRead (int pin) 返回值:HIGH or LOW
写 void digitalWrite (int pin, int value) value:HIGH or LOW
写入字节 void digitalWriteByte (int value) value:8位二进制值,直接写入wiring pi 0~7
调整占空比 void pwmWrite (int pin, int value) value:0-1024
延时函数
unsigned int millis (void)
返回32位无符号整数,表示自执行wiringPiSetup后所经历的毫秒数(ms),最大值为49天,溢出复位。
unsigned int micros (void)
返回32位无符号整数,表示自执行wiringPiSetup后所经历的微秒数(us),最大值为71分钟,溢出复位。
void delay (unsigned int howLong)
延时howLong毫秒,最大延时约49天。
注:linux为多任务系统,实际延时时间一定大于设定时间。
void delayMicroseconds (unsigned int howLong)
延时howLong微秒,最大延时约71分钟。
注:linux为多任务系统,实际延时时间一定大于设定时间。
中断
int waitForInterrupt (int pin, int timeOut)
在timeOut时间内等待指定pin中断,时间单位为ms。当timeOut = -1 时,表示永远等待中断。
返回值:-1,表示发生错误
0,表示超时
1,表示发生中断事件
注意:在使用本函数之前,必须初始化该管脚,可使用system()调用gpio,如:我们需要在GPIO pin 0等待下降沿中断,则必须在执行本函数之前运行:
gpio edge 0 falling
int wiringPiISR (int pin, int edgeType, void (*function)(void))
edgeType:INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH or INT_EDGE_SETUP
当指定中断发生时,执行自定义函数function。在执行function函数前会清除中断标志,在运行function函数期间发生的中断,只能保留运行期间发生的第一次中断。
参考:[1][2]
参考
- ^http://wiringpi.com/reference/
- ^PWM参数试验 https://zhuanlan.zhihu.com/p/252869569