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/CC1350:GPTimer 中的 CC1350 SysCtrlClockGet

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/700253/ccs-cc1350-cc1350-sysctrlclockget-in-gptimer

器件型号:CC1350

工具/软件:Code Composer Studio

When trying GPTimer, there is an expression, which calculates timeout and loads it to GPTimerCC26XX

///将 RX 超时值设置为500ms ////////////////////////////////////////////////////////
rxTimeoutVal =(SysCtrlClockGet()*5UL)/10UL -1UL;
GPTimerCC26XX_setLoadValue (hTimer2、rxTimeoutVal);

有人能解释一下  

(SysCtrlClockGet ()*5UL)/10UL - 1UL 正在计算得出以提供500ms 的时间。 \

SysCtrlClockGet()提供了一个微控制器时钟频率48000000,然后是5UL 的含义,以及如何计算它们以得到500ms 的结果?

提前感谢

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

    您能否澄清一下您从中挑选的示例、我需要整个图片来为您提供一个好的答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Boris、

    UL 是 unsigned long 的后缀、只需确保计算完成的时间为 long 而不是 int、这可能会导致溢出。

    MCU 时钟频率乘以5除以10将为500ms 时钟周期的值。末尾的减号(-1UL)可能是修整值。

    在 _hal_SysTick .c 中:

    /
    *@fn SysCtrlClockGet
    *
    *@简述获取 SysTick 时钟速率
    *
    *@param None
    *
    @Return None
    /
    unsigned long SysCtrlClockGet (void)
    {
    return (get_MCU_clock);
    } 

    在 C:\ti_tirtos_cc13xx_cc26xx_2_21_01_08\products\cc13xxware_2_04_03_17272\inc\hw_sysctl.h 中

    #define GET_MCU_CLOCK 48000000 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric、非常感谢、我是 TI 微控制器的新用户、我想确认我正确理解了您的建议。

    计算超时的公式为 SysCtrlClockGet ()*5UL )/10UL - 1UL,它给出了简单的数字结果(对于48MHz 时钟)
    =48000000*5/10-1=239999999。

    因此、对于计算超时、我们不使用时间值(如微秒或毫秒)、而是使用时钟节拍数? 如果是这样、当然、23999999个周期将需要500毫秒才会发生中断。

    还请确认 GPTimerCC26XX_getValue (hTimer2)函数也返回当前的节拍数、而不是毫秒或其他任何内容?

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

    您好、Boris、

    正确、您将使用时钟节拍数作为值、而不是时间值。 GPTimerCC26XX_getValue()将返回节拍数。