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.

[参考译文] TMS570LS1224:延迟功能

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1263697/tms570ls1224-delay-function

器件型号:TMS570LS1224

您好!

我´m 使用 TMS750LS1224 Hercules Launchpad、我想知道是否有可以使用的类似 HAL_Dalay (ms)的函数?  

如果存在、在使用 FreeRTOS 时可以这样做?

谢谢!

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

    您好 Anderson、

    可通过两种方式生成 delay 函数:

    一种方法是使用 __delay_cycles 函数、另一种方法是使用 RTI 外设。

    1. __delay_cycles 是 我们的代码生成工具中的一个内在函数。

    使用此内在函数时存在一些限制、如编译器自述文件中所述。

    ========================================

    _delay_cycles 内在函数会插入代码、以精确地使用
    指定的周期、无副作用。  延迟的周期数量必须为
    编译时常量。

    注意:周期时序数据基于0个等待状态。  结果将随以下条件而变化
    其他等待状态。 该实现方案不考虑动态
    预测。  考虑到流水线级别、较低的延迟周期计数可能不太准确、
    刷新行为。

    ========================================

    实际上、我使用220Mhz CPU 时钟(GCLK)测试了该函数、参数为10000个周期、我通过了

    实际上、根据上述值、预期的延迟应为(10000/220Mhz) 45.45uS (对)、但我得到的延迟为160us。 这是因为闪存的等待周期、正如您可以看到下面的 pic 当时钟是220Mhz 时、闪存的等待状态不为零

    数据为3、地址为1。

    当我将输入操作数值从10000更改为1000时、我得到的是16us。 因此、我建议使用此函数、只计算具有一些高值的实际延迟、然后将其缩小到所需值。

    有关更多详细信息、请参阅以下主题:

    (+) RM48HDK 延迟功能? -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    2.另一种方法是使用 RTI 函数:

    对于此方法、请参阅以下主题:

    (+) RM44L920:延时时间-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。