我不是 C 开发人员,但我需要编写简单的程序,我有延迟问题。这是我的计划:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <softPwm.h>
int main (int argc, char *argv[])
{
int val = 10;
if (argc > 1) {
val = atoi(argv[1]);
}
wiringPiSetup () ;
pinMode(1, OUTPUT);
softPwmCreate (1, 0, 100) ;
printf ("Soft Pwm created: %s!\n", argv[1]) ;
softPwmWrite (1, val) ;
delay (200);
return 0;
}
直到我用延迟(200)删除行,它才能正常工作。在程序完成之前,我怎么能等到函数softPwmWrite完成而没有 delay()? 我正在使用 Linux 和 wiringPi 库。感谢。
答案 0 :(得分:1)
加入pthread.h
并致电pthread_exit
:
#include <pthread.h>
....
softPwmWrite (1, val) ;
pthread_exit(0);
}
当softPwmWrite
返回时,它将退出该程序。 softPwmWrite使用线程,您只需要确保程序在线程完成之前不会死亡。当所有线程完成后,该过程将在最后退出。