我在C中编写了我的rapsberry pi上的gpio引脚。不会让我陷入困境。当我使用==或!=它并不重要时,循环就会卡住。这是因为当程序进入循环时它不会更新变量的状态,因为while循环使用了吗?
for(i=0;i<200;i++)
{
uint8_t valu = bcm2835_gpio_lev(SIG);
while(valu == 0)
{
uint8_t valu = bcm2835_gpio_lev(SIG);
data[i] = 0;
dan = dan + 1;
delay(0.001);
}
timeout = 0;
while(val == 1 && timeout < 70)
{
uint8_t val = bcm2835_gpio_lev(SIG);
data[i] = data[i] + 1;
dat = dat + 1;
timeout = timeout + 1;
delay(0.001);
}
delay(0.001);
}
bcm2835指令来自覆盆子pi使用的broadcom IC的c库。
答案 0 :(得分:6)
这两个循环都没有修改val / valu,因为它在该循环中定义了一个具有相同名称的NEW变量,有效地隐藏了循环保护中使用的变量。
答案 1 :(得分:0)
这应该有效
uint8_t valu = bcm2835_gpio_lev(SIG);
uint8_t val = 1;
while(valu == 0)
{
valu = bcm2835_gpio_lev(SIG);
data[i] = 0;
dan = dan + 1;
delay(0.001);
}
...
while(val == 1 && timeout < 70)
{
val = bcm2835_gpio_lev(SIG);
data[i] = data[i] + 1;
dat = dat + 1;
timeout = timeout + 1;
delay(0.001);
}