使用==或!=时循环卡住了

时间:2014-04-01 18:41:59

标签: c button raspberry-pi

我在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库。

2 个答案:

答案 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);
    }