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.

[参考译文] RTOS/CC2650STK:每1ms 中断一次

Guru**** 2609895 points
Other Parts Discussed in Thread: CC2650STK, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/583312/rtos-cc2650stk-interrupt-every-1msec

器件型号:CC2650STK
Thread 中讨论的其他器件: SYSBIOS

工具/软件:TI-RTOS

您好!

我希望每1ms 运行一次函数。 我使用了 clock_CC2650STK 示例并使用了周期性计时器、但我不知道如何将设置设置设置为具有1msec。

示例将时钟定义为 Clock_construct(&clk0Struct,(Clock_Functr )clk0Fxn、5000/Clock_tickPeriod、&clkParams);

clkParams.period = 50000/Clock_tickPeriod、但我不知道 5000/Clock_tickPeriod 是什么。  以及 Clock_tickPeriod 的值。 如何将设置更改为具有1msec。

此外、我想让模块空闲以降低功耗、并在1ms 后唤醒以执行某项操作、然后进入睡眠模式。

请举个例子。

谢谢。

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

    您好、Asad、

    时钟参数节拍周期和传递给 Clock_construct()的超时以时钟节拍为单位给出。  Clock_tickPeriod 以微秒为单位。  因此、如果您希望周期为1 msec = 1000 usecs、则需要设置 clkParams.period = 1000 / Clock_tickPeriod。

    您可以在 ti.sysbios.k.Clock 的 SYS/BIOS CDOC 中找到更多文档。  README.html 文件中还有一些有关内核时钟示例的信息。

    电源模块已在板级配置文件中启用、因此如果器件不忙、应进入低功耗模式。

    此致、

    Janet

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

    您好!

    我刚才修改了代码、以确保其正常工作、并显示了每5秒的系统时间。 但打印系统之间的时间大约为10秒。

    这是我的代码:

    Clock_Params clkParams;
    
    /*呼叫板初始化函数*/
    Board_initGeneral();
    
    Clock_Params_init (clkParams);
    clkParams.period = 5000000/Clock_tickPeriod;
    clkParams.startFlag = true;
    
    /*构造周期性时钟实例*/
    Clock_con构(&clk0Struct,(Clock_Functr) clk0Fxn、
    5000000/Clock_tickPeriod、&clkParams);
    clkParams.period = 0;
    clkParams.startFlag = true;
    clk2Handle = Clock_handle (&clk0Struct);
    
    clock_start (clk2Handle); 

    这是 clk0Fxn 函数:

    void clk0Fxn (UArg0)
    {
    uint32时间;
    计数=计数+ 1;
    时间= Clock_getTicks();
    system_printf (" clk0Fxn 中的系统时间=%lu\n"、(超长)时间);
    //taskFxn();
    system_flush();
    } 

    根据我的代码、传感器应该每10秒打印一次时间、但看起来需要更多时间。

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

    您好、Asad、

    我尝试在2650 Launchpad 上运行类似的程序、它大约每5秒打印一次。  下面是我将获得的输出:

    系统时间、clk0Fxn = 500007
    clk0Fxn = 1000006时的系统时间
    clk0Fxn = 1500011时的系统时间
    clk0Fxn = 2000006中的系统时间
    clk0Fxn = 2500011时的系统时间

    您是否获得了类似的输出?

    此致、

    Janet

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    输出是正确的,但当我使用数字手表时,它不是真正的5秒(介于7到8秒之间),似乎每个 Clock_tickPeriod 都不是精确的1微秒。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Asad、
    我认为 System_printf()可能会增加时间。 您能否尝试切换时钟函数中的 LED 而不调用 System_printf()? 您可以从驱动程序"empty"示例复制代码以切换 LED。
    此致、
    Janet