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

时间:2016-04-13 08:19:21

标签: c io embedded processor instruction-set

根据Wikipedia

  

GPIO功能可能包括:

     
      
  • 可以将GPIO引脚配置为输入或输出

  •   
  • 可以启用/禁用GPIO引脚

  •   
  • 输入值可读(通常为高= 1,低= 0)

  •   
  • 输出值可写/可读

  •   

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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