完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
楼主可以算算这个 32 位的值溢出需要多少时间
|
|
|
|
换算成十进制也就是 4,294,967,295;
|
|
|
|
按照10ms一个tick累加,约1.3年就溢出了。
|
|
|
|
已经考虑到了回绕的机制,所以没什么影响。如果真的有影响,会涉及到:
定时器的最大范围只有UINT32_MAX/2这样大; 想通过os tick值来当系统运行时间长度,会有回绕的问题。 |
|
|
|
所以应用程序中为了确保时间准确性还是用定时器,可是内核中有很多地方如ipc.c中,都有通过rt_tick_get来获取时间差,不知道在回绕的时候有没有问题呢,以下面代码为例,出现回绕时,timeout就为0了。
/* if it's not waiting forever and then re-calculate timeout tick */ if (timeout > 0) { tick_delta = rt_tick_get() - tick_delta; timeout -= tick_delta; if (timeout < 0) timeout = 0; } |
|
|
|
你不用管内核,内核里的都是考虑过的。没有所以
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
792 浏览 0 评论
4507 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2564 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2939 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31587 浏览 11 评论
72963 浏览 21 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 17:58 , Processed in 0.843543 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号