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.

[参考译文] CC2340R5:[TIMER]我想实现微秒级延迟

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1427343/cc2340r5-timer-i-want-to-achieve-a-microsecond-level-delay

器件型号:CC2340R5

工具与软件:

我需要实现微秒级延迟、例如延迟(1us)或延迟(5us)。

但在示例代码中,我只能找到 sleep()和 nanosleep()(),我不知道如何使用。

我想知道是否有其他可用函数可以实现微秒级延迟、例如 MSP430中的__delay_cycles ()函数。

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

    您好!  

    usleep() 将使您在1微秒的步骤中休眠。  

    此致、  

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

    但我曾尝试使用用户睡眠、但实际上是在毫秒内延迟。  

    我实际上输入的值只能以1k 为单位。 例如,usleep(2000)、usleep(3000 )。

    #define configTICK_RATE_Hz (1000UL)
    #define Tick_period_USECS (1000000L/configTICK_RATE_Hz)

    int usleep (useconds_t usec)

    TickType_t xDelay;

    /* usec 必须小于1000000 */
    if (usec >= 1000000)

    错误号= EINVAL;
    返回(-1);
    }

    /*吸顶*/
    xDelay =(usec + tick_period_USECS - 1)/ tick_period_USECS

    /*必须添加一个节拍以确保 xDelay 节拍的完整持续时间*/
    vTaskDelay (xDelay + 1);

    返回(0);
    }

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

    您好!  

    感谢您提供的其他详细信息。  

    使用 ClockP_usleep()应该可以做到这一点。 您能为我测试一下吗?  

    此致、  

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

    尊敬的 Cl é ment:

    感谢您的帮助。  ClockP_usleep()可以成功运行。

    我还有一个问题、我想延迟1us、然后切换一个引脚的电压、而花费的时间大约为1.5us。 我以前听说过 GPIO_TOGG()将花费大约0.5us 的时间。  这就是0.5us 是冗余的原因吗?   

    此致、
    雷德蒙德。