TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310: CC1310 Task_sleep() 跟usleep() 函数有什么区别吗?主要是功耗方面?

Part Number:CC1310

CC1310 Task_sleep() 跟usleep() 函数有什么区别吗?主要是功耗方面?

Galaxy Yue:

您好,

1.sleep和usleep是posix中的API,而task_sleep是rtos中的API,二者的本质都是一样的,既最终都是通过tick实现sleep的

2.Task_sleep是让出对MCU的占用,可以让其他task得到执行或者执行idle task从而进入低功耗状态。它的计时单位是systick,默认为10us。

3..sleep的输入参数是seconds、usleep的输入参数是micro seconds

4.sleep和usleep是功耗是无差别的

5.关于Task_sleep()和usleep()功耗区别这个问题我会帮您询问一下资深工程师的。

希望对您有所帮助。

,

Galaxy Yue:

您好,以下来自工程师的回复:

Task_sleep() 将系统时钟节拍数作为计时参数。 您可以在此处阅读完整文档:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_1GHz_Task_8h.html

usleep() 以微秒为计时参数。 如果您查看 sleep.c 中的实现,您将看到它最终调用了 Task_sleep。

/**======== usleep ========*/
int usleep(useconds_t usec)
{UInt32 timeout;/* usec must be less than 1000000 */if (usec >= 1000000) {errno = EINVAL;return (-1);}/*Implementations may place limitations on the granularity of timer*values. For each interval timer, if the requested timer value requires*a finer granularity than the implementation supports, the actual timer*value shall be rounded up to the next supported value.*//* Clock_tickPeriod is the Clock period in microseconds */timeout = (UInt32)((usec + Clock_tickPeriod - 1) / Clock_tickPeriod);/* must add one tick to ensure a full duration of timeout ticks */Task_sleep(timeout + 1);return (0);
}

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: CC1310 Task_sleep() 跟usleep() 函数有什么区别吗?主要是功耗方面?
分享到: 更多 (0)