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.

[参考译文] TM4C1294NCPDT:GPIO 读取时间

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1024517/tm4c1294ncpdt-gpio-read-time

器件型号:TM4C1294NCPDT

您好!

在其中一个应用中、我需要时间测量、因此、为了检查控制器是否合适、我需要时间读取 GPIO 引脚、或不读取。 读取数字输入所需的时钟周期。 通过使用 PLL、我的系统时钟为120MHz。

PSFLT=GPIOPinRead (GPIO_PORTK_base、GPIO_PIN_4);

请帮助

此致

Khodidas Domadiya

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

     您好、Khodidas、

    您是否需要读取信号的总高电平(或低电平)时间? 如果是这样、我们有一个计时器示例、可在 TivaWare 中执行该操作: timer_边缘_capture

    这样就无需了解时钟周期。

    就答案而言、这取决于引脚的读取方式。 您需要查看首先执行的代码行数。 如果计时器不工作、这可能是您从 DRM 代码中受益的罕见情况之一、因此您可以绕过将增加时钟周期的 TivaWare API。

    此致、

    Ralph Jacobi

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

    您好、Ralph、

    由于我需要读取简单的 GPIO、同样 需要读取大约30个 GPIO、但由于我们在应用中存在时间限制、需要扫描 8次、数据将通过以太网传输、它还包括通过 UART 从其他10个器件读取的数据、 所有这些都需要在一毫秒内完成、因此要检查每个限制、必须通过读取引脚来了解简单的 GPIO 状态。

    此致

    霍迪达斯

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

    您好、Khodidas

    因此、通常情况下、假设系统时钟以120MHz 运行、每条指令需要8.33ns 的执行时间、因此这一点可以归结为代码执行的效率。 使用 TivaWare 与 DRM 会有不同的结果。 DRM 与汇编也可能是因为 DRM 仍然仅从原始汇编中简化代码。

    另一个元件是、根据指令、执行可能需要多个时钟周期。 请见 :Cortex-M4指令

    对于 TivaWare GPIOPinRead、将会存在诸如 assert 校验之类的开销、以及函数将变量向下传递到行而不是进行硬编码校验的方式:

        //
        // Check the arguments.
        //
        ASSERT(_GPIOBaseValid(ui32Port));
    
        //
        // Return the pin value(s).
        //
        return(HWREG(ui32Port + (GPIO_O_DATA + (ui8Pins << 2))));

    最终、您需要评估您需要对代码进行多精细的处理、然后计算您最终为此目的使用的代码的周期数、以了解该元素。  

    此致、

    Ralph Jacobi