wiringPi库真是包含了各个方面,甚至提供了进程操作接口。
使用wiringPi的接口可以很方便地创建新进程。
int piHiPri (int priority) ;
设置进程优先级。范围是0~99,数字越大优先级越高,默认是0。
返回0代表成功,返回-1代表失败。
注:必须已root身份运行,否则无效。
int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
设置某个pin作为中断脚,当触发中断时调用指定函数。
估计实现原理是后台用了一个定时器不断扫描这个引脚。
pin是引脚序号,编号方式在Setup时决定。
edgeType是中断触发方式:
INT_EDGE_FALLING | 下降沿 |
INT_EDGE_RISING | 上升沿 |
INT_EDGE_BOTH | 上升沿和下降沿 |
INT_EDGE_SETUP | 未设置 |
中断处理函数传入函数指针即可。
int piThreadCreate (PI_THREAD func) ;
创建一个线程执行func函数。要求func函数用PI_THREAD声明。
返回0代表创建成功,非0代表失败。
例:
piLock (int keyNum) ;
piUnlock (int keyNum) ;
获取锁和释放锁。wiringPi-C提供了4个锁,keyNum范围是0~3。
默认所有所都是释放状态,当调用piLock()想要获取锁时,如果这个锁没有被释放则会一直等待,直到这个锁被释放才会拿到这个锁并继续运行下去。
这里的锁可以理解为某个资源,使用该资源时调用piLock()标志该资源正在被使用,使用结束后调用piUnlock()表示释放该资源。其他地方想要使用该资源也必须先获取这个锁,如果没有获取到则等待使用者释放资源后再使用。