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.

[参考译文] CC2650:LED 闪烁

Guru**** 2553450 points
Other Parts Discussed in Thread: CC2650, SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/999157/cc2650-led-blinking

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

大家好、

我正在使用 cc2650,它介绍了如何使用 Task_sleep()使 LED 闪烁,您还能解释一下这一点

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

    基本来说,您可以创建一个 for 循环或 while 循环来使用  Task_sleep()来切换 led。

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

    您好、Yikai、

    非常感谢您的回复、我尝试过、但没有成功

    int rcnt = 0;
    for (rcnt = 10;rcnt > 0;rcnt -)

    //Task_sleep (50000 / Clock_tickPeriod);
    PIN_setOutputValue (ledPinHandle、Board_LED0、0);
    Task_sleep (1000*(1000 / Clock_tickPeriod));
    PIN_setOutputValue (ledPinHandle、Board_LED0、0);
    Task_sleep (1000*(1000 / Clock_tickPeriod));
    //PIN_setOutputValue (ledPinHandle、Board_LED0、0);


    Rcnt = 0;

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

    由于在 Task_sleep 前后使用 PIN_setOutputValue (ledPinHandle、Board_LED0、0)、因此不看到闪烁是正常现象。 是否不将两个 PIN_setOutputValue (ledPinHandle、Board_LED0、0)中的一个更改为 PIN_setOutputValue (ledPinHandle、Board_LED0、1)?

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

    感谢您的回复、

    我正在做一个小项目、我想实现一些类似的项目、而长按按钮 LED 应在释放后持续闪烁、而应熄灭。 但当我使用 CPUDELAY()时,它会起作用,但当我使用 TaskSleep ()时,它不起作用

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

    您可以启动周期性计时器事件以在按下按钮时切换 LED (看起来像闪烁)、并在松开按钮时停止周期性事件以停止闪烁。

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

    感谢您的回复、

    您能为此提供任何示例代码吗

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

    有关按钮保持和释放实现、请参阅 sunmaysky.blogspot.com/.../how-to-detect-buttont-hold-in-cc26x2.html。 根据前面的示例、您可以创建周期性事件来切换 LED。 对于周期性事件、您可以参阅 BLE 堆栈的 simple_peripheral 示例中的 SP_PERiod_EVT 实现。

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

    感谢您的回复、您能解释  一下 TaskSleep (1000)-> 这是多少秒

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

    您可以使用"Task_sleep (standbyDurationUs / Clock_tickPeriod)"、而 standbyDurationUs 是您打算在我们中延迟的时间。

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

    谢谢您 Yikai、 Clock_tickPeriod 的值是什么  

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

    Clock_tickPeriod 在 Clock.h 中定义为 ti_sysBIOS_KNL_Clock_tickPeriod

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

    感谢您的回复、我觉得此代码正常工作  

    while (!PIN_getInputValue (pinId)){
    PIN_setOutputValue (ledPinHandle、Board_LED1、1);
    CPUdelay (8000*50);
    PIN_setOutputValue (ledPinHandle、Board_LED1、0);
    CPUdelay (8000*50);

    但是、当尝试将 CPUdelay 重放为 TaskSleep 时、它不起作用、为什么可以对此进行解释

    while (!PIN_getInputValue (pinId)){
    uint32_t sleepU = 50000000;
    PIN_setOutputValue (ledPinHandle、Board_LED1、1);
    Task_sleep (sleepU/Clock_tickPeriod);
    PIN_setOutputValue (ledPinHandle、Board_LED1、0);
    Task_sleep (sleepU/Clock_tickPeriod);

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

    当您将 sleepU 设置为50000000时、它将休眠50秒、对于 LED 闪烁来说太长了。 您可以尝试使用 sleepU = 50000来查看 LED 是否可以在500ms 间隔内闪烁。

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

    您好、Yikai、

    它现在正在工作、但我有一个疑问  、您是如何说50000000 -> 50s 和500000 -> 500ms 的。 您能不能这样计算

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

    我已经回答说,standbyDurationU 是您打算延迟我们的时间,所以50000000us 等于50000ms,50000ms 等于50秒。

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

    非常感谢您的回复、最后我有了一些想法  

    Clock_tickPeriod -> oxa (Hexa)-> 10 (十进制)

    Task_sleep (sleepU/Clock_tickPeriod);-> Task_sleep (50000/10)-> 0.005秒

    此计算正确、您能解释一下

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

    我已经向您解释了。

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

    非常感谢您的回复、问题已解决