Part Number:CC1310
eep函数 的取值范围?
Alex Zhang:
已经跟进您的问题,谢谢
,
Alex Zhang:
什么是eep函数?请参考这个函数在哪里找到
,
genyi liu:
是sleep函数
,
Alex Zhang:
您好,已经跟进您的问题
,
genyi liu:
有进展了吗
,
Alex Zhang:
您好,这边需要您去填入范围
https://dev.ti.com/tirex/explore/content/simplelink_cc13x0_sdk_4_20_02_07/docs/tidrivers/doxygen/html/unistd_8h.html#ad4669b3813c3b4a616a738317fdc974f
参考以上链接
,
genyi liu:
我是想问
unsigned
sleep (unsigned seconds)函数参数seconds最大取值范围是多少?
,
Alex Zhang:
无符号整型 建议您去参考一下c语言相关的书籍
,
Alex Zhang:
我不知道您是出于什么样的想法做程序设计去了解sleep函数的睡眠时间
但是如果你想用这个函数实现睡眠功能是不行的。
,
genyi liu:
不太理解你的意思,sleep就是睡眠的意思吧,查阅了资料,调用sleep是会进入休眠模式,实测也是这样。
sleep函数内部调用的是RTC的定时实现的,理论上取值范围应该是有限制的,不是你一句参考一下c语言相关的书籍就行的。
你要是不懂可以直说,不要随便忽悠人。
,
Alex Zhang:
Alex Zhang 说:但是如果你想用这个函数实现睡眠功能是不行的。
你想实现多久时间的休眠
,
Alex Zhang:
genyi liu 说:你要是不懂可以直说,不要随便忽悠人。
已经跟进您的问题,我确实太明白您的意思。请您细致描述一下项目需求
,
genyi liu:
我需要调用sleep()函数,实现延时10天。也就是调用后10天才唤醒
,
Galaxy Yue:
您好,
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); }您的需求我会继续帮您跟进。
,
Galaxy Yue:
您好,
睡眠时间不可能超过 11.9 小时,因此您需要多次调用 sleep
,
genyi liu:
是的,你的回答完全验证了我的猜想,并成功解答了我的疑问了。
sleep.c是在哪个目录呢?还是不对用户开放的吗?
,
Galaxy Yue:
当您在默认位置安装 SDK 时,您将在此处找到该文件:
C:\ti\simplelink_cc13x0_sdk_4_20_02_07\source\ti\posix\tirtos