C 当使用==或时,While循环被卡住=
我正在用C语言编程rapsberry pi上的gpio引脚。不,我陷入了一个while循环。当我使用==或!=没关系,回路卡住了。这是因为当程序进入循环时,它不会更新while循环使用的变量的状态吗C 当使用==或时,While循环被卡住=,c,button,raspberry-pi,C,Button,Raspberry Pi,我正在用C语言编程rapsberry pi上的gpio引脚。不,我陷入了一个while循环。当我使用==或!=没关系,回路卡住了。这是因为当程序进入循环时,它不会更新while循环使用的变量的状态吗 for(i=0;i<200;i++) { uint8_t valu = bcm2835_gpio_lev(SIG); while(valu == 0) { uint8_t valu = bcm2835_gpio_lev(SIG);
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);
}
for(i=0;i两个循环都不修改val/valu,因为它在该循环中定义了一个新变量w/相同的名称,有效地隐藏了循环保护中使用的变量。这应该有效
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);
数据[i]=数据[i]+1;
dat=dat+1;
超时=超时+1;
延迟(0.001);
}
@staticx尽管您链接到的问题与GPIO有关,但该用户需要的是C语言的基础教程;问题更多的是关于变量的范围,而不是GPIO引脚。
while(val == 1 && timeout < 70)
{
val = bcm2835_gpio_lev(SIG);
data[i] = data[i] + 1;
dat = dat + 1;
timeout = timeout + 1;
delay(0.001);
}