【发布时间】:2019-08-01 19:22:51
【问题描述】:
我正在用 C 语言开发一个在树莓板上运行的程序。在程序中,我想使用 WiringPiISR 来处理引脚触发的中断。然而,我发现,wiringPiISR 并没有阻塞主程序,而是创建了一个并发线程。我错过了什么吗?
最小代码示例:
#include <WiringPi.h>
#include <unistd.h>
int Check=0;
void Isr()
{
while (1)
{
sleep(1);
Check++;
}
}
int main()
{
wiringPiSetup () ;
pinMode(7, INPUT) ;
wiringPiISR (7, INT_EDGE_BOTH ,&Isr);
while (1)
{
sleep(2);
printf("check : %d", Check );
}
return 0;
}
我希望这个最小程序在中断触发后永远不会恢复,但在我的情况下,它会不断增加变量检查并将其打印在屏幕上(两个线程同时工作)。
【问题讨论】:
-
不要在 ISR 中调用 sleep()!
标签: c raspberry-pi embedded wiringpi