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

CC1310: sleep函数 的取值范围?

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

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: sleep函数 的取值范围?
分享到: 更多 (0)