运行期间Arduino上的错误会发生什么?

时间:2013-05-04 18:50:16

标签: runtime arduino runtime-error

如果使用Arduino,如果我使用这样的代码会怎么做:

int status;
void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  digitalWrite(13, status);
}

这个代码会做什么? LED会亮吗?会损坏芯片吗?在Arduino IDE中进行编译时,它表示没问题。还有其他问题,编译器无法捕获,但它们会做什么?另一个例子是做“digitalRead();”而它被设置为输出。

注意:使用Arduino Uno SMD版R2。

1 个答案:

答案 0 :(得分:2)

您不会损坏Arduino,但您无法确定输出,因为该值未初始化。它保存内存在其位置所具有的任何值(将其视为未知的随机值)。但最有可能的是,它会被打开,因为如果你向它传递除LOW(= 0)以外的任何东西,digitalWrite会将引脚设置为高。在wires_digital.c中查看Arduino的源代码:

    if (val == LOW) {
        *out &= ~bit;
    } else {
        *out |= bit;
    }

关于您的其他问题:

读取引脚值会返回PINx寄存器值,即引脚的物理状态(高或低),无论其模式如何(输入或输出)。

一般情况下,损坏Arduino非常困难,在大多数情况下,您需要在某些引脚上施加一些高/负电压来对其造成损坏。