eep函数 的取值范围?
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.
不太理解你的意思,sleep就是睡眠的意思吧,查阅了资料,调用sleep是会进入休眠模式,实测也是这样。
sleep函数内部调用的是RTC的定时实现的,理论上取值范围应该是有限制的,不是你一句参考一下c语言相关的书籍就行的。
你要是不懂可以直说,不要随便忽悠人。
但是如果你想用这个函数实现睡眠功能是不行的。
你想实现多久时间的休眠
您好,
sleep函数是task_sleep函数的包装,两者都以0xFFFFFFFF作为最大输入参数。
sleep函数会再次调用task_sleep函数。
对于 sleep 函数,您给出seconds you want to sleep,,对于 task_sleeo,您给出number of ticks..。
1 个刻度为 10 us。
这再次意味着当您向task_sleep(0xFFFFFFFF)提供最大输入时,您可以休眠0xFFFFFFFF x 10 us = 42949 s(11.9小时)
这意味着,如果您使用大于 42949 的值(例如 45000)调用 sleep(),设备将休眠 42949 秒,然后 sleep 函数返回 2051 (45000 - 42949 = 2051)。
然后您可以使用 2051 再次调用 sleep 函数。
以下是sleep.c
/* The maximum number of ticks before the tick count rolls over. We use * 0xFFFFFFFF instead of 0x100000000 to avoid 64-bit math. */ #define MAX_TICKS 0xFFFFFFFFL #define TICKS_PER_SEC (1000000L / Clock_tickPeriod) /* integral number of seconds in a period of MAX_TICKS */ #define MAX_SECONDS (MAX_TICKS / TICKS_PER_SEC) unsigned sleep(unsigned seconds) { unsigned long secs, ticks; /* at least 32-bit */ unsigned max_secs, rval; /* native size, might be 16-bit */ max_secs = MAX_SECONDS; if (seconds < max_secs) { secs = seconds; rval = 0; } else { secs = max_secs; rval = seconds - max_secs; } /* must use 64-bit math to compute tick value */ ticks = ((uint64_t)secs * 1000000L) / (uint64_t)Clock_tickPeriod; /* must add one tick to ensure a full duration of requested ticks */ Task_sleep((UInt32)(ticks + 1)); return (rval); }
您的需求我会继续帮您跟进。
当您在默认位置安装 SDK 时,您将在此处找到该文件:
C:\ti\simplelink_cc13x0_sdk_4_20_02_07\source\ti\posix\tirtos