我可以从 GPIO 的输出引脚读取有效信号吗?

Can I read a valid signal from an output pin of GPIO?

根据Wikipedia

GPIO capabilities may include:

  • GPIO pins can be configured to be input or output

  • GPIO pins can be enabled/disabled

  • Input values are readable (typically high=1, low=0)

  • Output values are writable/readable

据我了解,如果某个引脚设置为输入,则无法写入。换句话说,向输入引脚写入值是无效的。但是,我不确定输出引脚是否可读。

例如,给定一个编号为 8 的引脚,在我调用函数 write_pin_value(pin_8, 1); 之后,函数调用 read_pin_value(pin_8) 是否总是 return 值 1?

您应该查看您使用的目标芯片的数据表,因为不同的 IC 可能具有不同的 input/output 缓冲区结构。通常文档包含 IO 端口的完整描述。

一般来说固件在任何状态下都可以读写pin,不管是输入还是输出模式。但将值写入输入引脚不会影响其物理状态。同样,如果读取输出引脚,您可能会收到破坏的结果。

您不能将值 0x23 写入引脚,因为引脚的寄存器只有 1 位长,直到您使用数模外设。

这取决于MCU。其中一些具有输出锁存器,可为您提供实际输出状态的反馈。您可以阅读它以确保您的输出设置为正确的状态。

这在某些 MCU 中也很有用,您可以在其中反转输出值(正常高电平,正常低电平)并且可以检查实际输出状态是否符合预期。