我可以从 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 中也很有用,您可以在其中反转输出值(正常高电平,正常低电平)并且可以检查实际输出状态是否符合预期。
根据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 中也很有用,您可以在其中反转输出值(正常高电平,正常低电平)并且可以检查实际输出状态是否符合预期。