Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Kernel
timer
定时器里超时的条件是((current_tick - t-timeout_tick) < RT_TICK_MAX/2
发布于 2016-04-24 14:00:49 浏览:4536
订阅该版
最近在看RTT的源码,看到软件定时器的地方,判断定时器超时以及初始化装入超时计数的值都跟这个有关`((current_tick - t-timeout_tick) < RT_TICK_MAX/2`。很不理解为什么是RT_TICK_MAX/2,网上找到的答案是: 因为系统时钟溢出后会自动回绕。取定时器比较最大值是定时器最大值的一半,即RT_TICK_MAX/2(在比较两个定时器值时,值是32位无符号数,相减运算将会自动回绕)。系统支持的定时器最大长度就是RT_TICK_MAX的一半:即248天`(10ms/tick)`,124天`(5ms/tick)`,24.5天`(1ms/tick)`,以下内容相同道理。 后面的都能理解,前面第一句实在没想通是什么意思,大家有理解的吗? 下载附件 - [rt-thread-timer.zip](/uploads/7953_205bacca4ee63c96f9effd0725952ff5.zip)
查看更多
8
个回答
默认排序
按发布时间排序
charliexp
2016-04-25
这家伙很懒,什么也没写!
这个主要是用正负数的符号判断是否时间超,而不必处理定时器的回绕造成定时判断错误(回绕情况下也是正常的), 当`current_tick < t-timeout_tick`时,这个值是负数即最高位为1, 则`((current_tick - t-timeout_tick) < RT_TICK_MAX/2`的值不成立, 当current_tick 等于或大于(但不大于`RT_TICK_MAX/2`) `t-timeout_tick`时 `((current_tick - t-timeout_tick)
qq_哎
2016-04-26
这家伙很懒,什么也没写!
哦哦,原来是这个原因啊,多谢了啊!我再去看那看源码分析一下哈~
kontais
2016-05-24
这家伙很懒,什么也没写!
其实只要加入一个`startup_tick`,就可以规避32bit回绕问题, ```c current_tick /* 当前tick值 */ t->startup_tick /* 定时器启动时刻值 */ t->init_tick /* 定时器定时器 */ /* the timer not timeout */ if ((current_tick - t->startup_tick) < t->init_tick) break; ```
grissiom
2016-05-26
这家伙很懒,什么也没写!
>其实只要加入一个startup_tick,就可以规避32bit回绕问题, 感觉好像不行……
kontais
2016-06-11
这家伙很懒,什么也没写!
>其实只要加入一个startup_tick,就可以规避32bit回绕问题, 要改好几个地方,上面代码只是示意。
kontais
2016-07-12
这家伙很懒,什么也没写!
改了一下,超时时间可以设置最大`RT_TICK_MAX - 1` 代码见附件。
bernard
2016-07-12
这家伙很懒,什么也没写!
谢谢,请把补丁通过github的pull request先发上来吧
撰写答案
登录
注册新账号
关注者
0
被浏览
4.5k
关于作者
qq_哎
这家伙很懒,什么也没写!
提问
6
回答
26
被采纳
0
关注TA
发私信
相关问题
1
请教cpu使用率分析
2
选择FreeRTOS, 还是RT-Thread。
3
thread heap stack overflow ?
4
rtt消息队列delay问题
5
释放被删除线程的内存地方在哪里啊
6
请教:各线程结束后,释放其中的内存的连续性问题
7
STM32F103中断关于信号量、邮箱问题
8
RTT中的线程栈大小如何控制
9
关于线程由执行态变为挂起态的代码实现,,,
10
rt_malloc(rt_size_t size)内存分配函数最小分配尺寸问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
xiaorui
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部