1

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

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

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

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

注意:使用 Arduino Uno SMD 版本 R2。

4

1 回答 1

2

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

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

关于你的其他问题:

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

一般来说,损坏 Arduino 真的很难,而且在大多数情况下,您需要在某些引脚上施加一些高/负电压来损坏它。

于 2013-05-04T18:57:34.497 回答