This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28377D:功能:UINT16 GPIO_ReadPin (UINT16引脚)

Guru**** 2604135 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/676526/ccs-tms320f28377d-function-uint16-gpio_readpin-uint16-pin

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

您好!

我对 UINT16 GPIO_ReadPin (UINT16引脚)的功能感到困惑。

以下代码处于无限循环中、我使用 GPIO_ReadPin (119)。

结果非常奇怪。 我使用示波器来测量 GPIO119的波形、并且它始终为低电平。

但是、我 的 SYS_FLAG 有时为2、有时我得到 SYS_ERR = 2。  这意味着当 GPIO_ReadPin (119)是第一次读取时、GPIO_ReadPin (119)=0、然后 GPIO_ReadPin (119)=1是第二次、有时 GPIO_ReadPin (119)=0是第三次。

为什么 GPIO_ReadPin (119)不能始终是相同的值?  GPIO_ReadPin (119)的返回值是多少(0、1除外)?    谢谢!

主()

……μ A

对于(;)

如果(SYS_FLAG = 0)             

  {

    IF (GPIO_ReadPin (119)=0)

        SYS_FLAG = 1;

    其他

      {       

        IF (GPIO_ReadPin (119)!= 0)

           SYS_ERR = 1;

    }

如果(SYS_FLAG = 1)

  IF (GPIO_ReadPin (119)!= 0)

   SYS_FLAG = 2;

如果(SYS_FLAG == 2)

  IF (GPIO_ReadPin (119)!= 0)

   SYS_ERR = 2;

 

}           

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如 GPIO_ReadPin 的注释部分所述:

    //
    //// GPIO_ReadPin -读取指定引脚的 GPyDAT 寄存器位。 请注意
    // 这将返回引脚的实际状态、而不是
    //的状态 输出锁存器。
    // 

    因此、您将在输出锁存器(probe)上获得一个恒定值、但引脚的实际状态可能会因某些延迟而变化。 请注意、必须将 GPIO 用作输入引脚或输出引脚。 如果您正在探测配置为输出引脚的引脚、那么读取引脚值可能会为您提供不同的值。  

    您可以在 TRM 第908页上阅读有关此内容的更多信息。  

    Ritvik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Ritvik、

    我像这样将其设置为输入引脚。 对吗?
    EALLOW;
    GPIO_SetupPinOptions (119、GPIO_INPUT、GPIO_PushPull);
    EDIS;
    然后使用的功能(GPIO_ReadPin (119)。

    我使用示波器获得了 GPIO119的波形、它很低(120mV)。 我在调试窗口中观察到它、有时为1、有时为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Honmei、

    [引用用户="Hongmei Wan"] GPIO_SetupPinOptions (119、GPIO_INPUT、GPIO_PushPull);[/quot]

    1. GPIO_PushPull 说、我认为您是指 GPIO_PULLUP? 请检查一次。
    2. 在这种配置下、GPIO 引脚119处于输入模式。 因此、连接到输入引脚的任何器件都将充当输入源。

    [引用 USER="Hongmei Wan"]我使用范围[/引用获得了 GPIO119的波形]

    由于您已将该引脚设置为输入引脚、因此不得使用示波器(我认为您正在使用示波器)探测引脚。 示波器上的任何残余电压都会导致寄存器值发生变化。 这就是您在调试窗口(以及代码中)中获得不同值的原因。 相反、您应该使用信号发生 器来提供恒定输入、然后检查引脚的状态。 确保您不会超过给定的电流限制。

    Ritvik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    以上答案是否解决了您的问题? 如果是、请将其标记为已解决。 如果您有任何其他无法理解的内容、请回复。
    谢谢
    Ritvik