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代表失败。
例:

1
2
3
4
5
6
7
8
9
10
PI_THREAD (func)    //注意这种声明方式,函数名用括号括起来,不带参数
{
	...
}
void main()
{
	...
	piThreadCreate(func);
	...
}

piLock (int keyNum) ;
piUnlock (int keyNum) ;
获取锁和释放锁。wiringPi-C提供了4个锁,keyNum范围是0~3。
默认所有所都是释放状态,当调用piLock()想要获取锁时,如果这个锁没有被释放则会一直等待,直到这个锁被释放才会拿到这个锁并继续运行下去。
这里的锁可以理解为某个资源,使用该资源时调用piLock()标志该资源正在被使用,使用结束后调用piUnlock()表示释放该资源。其他地方想要使用该资源也必须先获取这个锁,如果没有获取到则等待使用者释放资源后再使用。


本站所有文章欢迎转载,但请保留作者信息和原文地址。

Comments